From 37bb696a30cfcbcc12fe83f6fcc19661ae9d5f61 Mon Sep 17 00:00:00 2001 From: Jess Frazelle Date: Fri, 27 Sep 2024 18:23:46 -0700 Subject: [PATCH] preserve order of struct in autocomplete (#4018) fix #3110 preserve order of struct in autocomplete Signed-off-by: Jess Frazelle --- docs/kcl/std.json | 412690 ++++++++++----------- docs/kcl/types/ArcData.md | 4 +- docs/kcl/types/BezierData.md | 2 +- docs/kcl/types/CircularPattern2dData.md | 4 +- docs/kcl/types/CircularPattern3dData.md | 4 +- docs/kcl/types/FaceTag.md | 4 +- docs/kcl/types/HelixData.md | 2 +- docs/kcl/types/ImportFormat.md | 6 +- docs/kcl/types/ImportedGeometry.md | 2 +- docs/kcl/types/LinearPattern2dData.md | 4 +- docs/kcl/types/LinearPattern3dData.md | 4 +- docs/kcl/types/LoftData.md | 4 +- docs/kcl/types/ShellData.md | 2 +- docs/kcl/types/Sketch.md | 4 +- docs/kcl/types/SketchData.md | 10 +- docs/kcl/types/SketchOrSurface.md | 16 +- docs/kcl/types/SketchSet.md | 6 +- docs/kcl/types/SketchSurface.md | 12 +- docs/kcl/types/Solid.md | 10 +- docs/kcl/types/SolidSet.md | 12 +- docs/kcl/types/TangentialArcData.md | 2 +- src/wasm-lib/Cargo.lock | 2 + src/wasm-lib/kcl/Cargo.toml | 2 +- src/wasm-lib/kcl/src/docs/mod.rs | 14 +- 24 files changed, 206412 insertions(+), 206410 deletions(-) diff --git a/docs/kcl/std.json b/docs/kcl/std.json index 3c42908f31..646303d807 100644 --- a/docs/kcl/std.json +++ b/docs/kcl/std.json @@ -81,28 +81,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -117,6 +97,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -126,32 +111,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -162,6 +121,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -171,51 +140,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -229,27 +209,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -259,38 +229,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -304,27 +284,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -334,38 +304,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -379,27 +359,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -409,38 +379,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -454,27 +434,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -484,38 +454,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -525,8 +505,28 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, @@ -555,61 +555,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -623,155 +664,347 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -785,78 +1018,637 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -864,6 +1656,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -874,56 +1679,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -931,6 +1806,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -941,50 +1829,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -996,608 +1940,89 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "path": { - "description": "The path the tag is on.", + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -1623,6 +2048,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -1634,6 +2093,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -1643,63 +2112,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -1725,10 +2164,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -1740,6 +2195,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -1750,6 +2209,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -1759,63 +2228,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -1841,10 +2280,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -1856,6 +2312,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -1866,6 +2331,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -1875,64 +2350,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -1958,13 +2402,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -1973,8 +2437,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -1983,11 +2447,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -1997,62 +2456,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -2078,6 +2508,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -2089,6 +2549,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -2098,66 +2568,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -2183,6 +2620,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -2194,6 +2649,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -2203,73 +2668,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", "nullable": true }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -2295,121 +2720,649 @@ "minItems": 2 } } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -2417,81 +3370,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -2502,64 +3393,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -2567,81 +3437,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -2652,128 +3460,133 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "type": { - "type": "string", - "enum": [ - "face" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + ] + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "value": { - "description": "The tag of the face.", "type": "string" }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } - } - } - ] - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -2799,62 +3612,6 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 } } }, @@ -2868,28 +3625,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -2904,6 +3641,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -2913,32 +3655,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -2949,6 +3665,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -2958,51 +3684,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -3016,27 +3753,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -3046,38 +3773,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -3091,27 +3828,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -3121,38 +3848,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -3166,27 +3903,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -3196,38 +3923,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -3241,27 +3978,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -3271,38 +3998,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -3312,246 +4049,649 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([2, 5], %, $seg01)\n |> angledLineToX([-angleToMatchLengthX(seg01, 7, %), 10], %)\n |> close(%)\n\nconst extrusion = extrude(5, sketch001)" + ] + }, + { + "name": "angleToMatchLengthY", + "summary": "Returns the angle to match the given length for y.", + "description": "", + "tags": [], + "args": [ + { + "name": "tag", + "type": "TagIdentifier", + "schema": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 2, + "minItems": 2 + } } } }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "end": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + { + "name": "to", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ { - "description": "A arc that is tangential to the last path segment", + "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", - "ccw", - "center", "from", "to", "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -3577,10 +4717,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -3592,6 +4748,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -3602,6 +4762,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -3611,64 +4781,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -3694,10 +4833,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -3709,6 +4864,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -3719,10 +4878,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -3733,62 +4897,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -3814,6 +4949,46 @@ "minItems": 2 } } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -3825,6 +5000,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -3834,66 +5019,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -3919,6 +5071,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -3930,6 +5106,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -3939,43 +5125,71 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { "type": { "type": "string", "enum": [ @@ -3993,19 +5207,63 @@ "type": "number", "format": "double", "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -4031,6 +5289,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -4042,6 +5318,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -4051,610 +5337,204 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([2, 5], %, $seg01)\n |> angledLineToX([-angleToMatchLengthX(seg01, 7, %), 10], %)\n |> close(%)\n\nconst extrusion = extrude(5, sketch001)" - ] - }, - { - "name": "angleToMatchLengthY", - "summary": "Returns the angle to match the given length for y.", - "description": "", - "tags": [], - "args": [ - { - "name": "tag", - "type": "TagIdentifier", - "schema": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", "type": "object", "required": [ - "id", - "sourceRange" + "x", + "y", + "z" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "x": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "y": { + "type": "number", + "format": "double" }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] + "z": { + "type": "number", + "format": "double" } } }, - { - "description": "An extruded arc.", + "xAxis": { + "description": "What should the plane’s X axis be?", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "x", + "y", + "z" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "x": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "y": { + "type": "number", + "format": "double" }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] + "z": { + "type": "number", + "format": "double" } } }, - { - "description": "Geometry metadata.", + "yAxis": { + "description": "What should the plane’s Y axis be?", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "x", + "y", + "z" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "x": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "y": { + "type": "number", + "format": "double" }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + "z": { + "type": "number", + "format": "double" } } }, - { - "description": "Geometry metadata.", + "zAxis": { + "description": "The z-axis (normal).", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "x", + "y", + "z" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "x": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "y": { + "type": "number", + "format": "double" }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] + "z": { + "type": "number", + "format": "double" } } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - }, - "required": true - }, - { - "name": "to", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { "__meta": { "type": "array", "items": { @@ -4677,63 +5557,40 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ - "plane" + "face" ] }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] + "description": "The tag of the face.", + "type": "string" }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the face’s X axis be?", "type": "object", "required": [ "x", @@ -4756,7 +5613,7 @@ } }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the face’s Y axis be?", "type": "object", "required": [ "x", @@ -4800,50 +5657,6 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" }, "solid": { "description": "The solid the face is on.", @@ -4856,61 +5669,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -4918,6 +5710,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -4928,56 +5733,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -4985,6 +5860,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -4995,50 +5883,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -5050,608 +5994,89 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "path": { - "description": "The path the tag is on.", + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -5677,6 +6102,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -5688,6 +6147,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -5697,63 +6166,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -5779,10 +6218,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -5794,6 +6249,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -5804,6 +6263,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -5813,63 +6282,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -5895,10 +6334,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -5910,6 +6366,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -5920,6 +6385,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -5929,64 +6404,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -6012,13 +6456,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -6027,8 +6491,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -6037,11 +6501,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -6051,62 +6510,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -6132,6 +6562,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -6143,6 +6603,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -6152,66 +6622,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -6237,6 +6674,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -6248,6 +6703,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -6257,73 +6722,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -6349,121 +6774,649 @@ "minItems": 2 } } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -6471,81 +7424,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -6556,64 +7447,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -6621,81 +7491,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -6706,112 +7514,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -6828,32 +7585,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -6864,6 +7595,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -6873,42 +7614,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -6922,28 +7679,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -6958,6 +7695,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -6967,32 +7709,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -7003,6 +7719,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -7012,51 +7738,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -7070,27 +7807,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -7100,38 +7827,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -7145,27 +7882,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -7175,38 +7902,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -7220,27 +7957,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -7250,38 +7977,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -7295,27 +8032,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -7325,38 +8052,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -7366,11 +8103,140 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + } + } + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([1, 2], %, $seg01)\n |> angledLine({\n angle: angleToMatchLengthY(seg01, 15, %),\n length: 5\n }, %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst extrusion = extrude(5, sketch001)" + ] + }, + { + "name": "angledLine", + "summary": "Draw a line segment relative to the current origin using the polar", + "description": "measure of some angle and distance.", + "tags": [], + "args": [ + { + "name": "data", + "type": "AngledLineData", + "schema": { + "description": "Data to draw an angled line.", + "anyOf": [ + { + "description": "An angle and length with explicitly named parameters", + "type": "object", + "required": [ + "angle", + "length" + ], + "properties": { + "angle": { + "description": "The angle of the line (in degrees).", + "type": "number", + "format": "double" + }, + "length": { + "description": "The length of the line.", + "type": "number", + "format": "double" + } + } + }, + { + "description": "An angle and length given as a pair", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + } + ] + }, + "required": true + }, + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -7388,31 +8254,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -7424,6 +8270,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -7433,63 +8289,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -7515,10 +8341,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -7530,6 +8372,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -7540,6 +8386,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -7549,63 +8405,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -7631,10 +8457,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -7646,6 +8488,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -7656,6 +8502,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -7665,64 +8521,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -7748,10 +8573,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -7763,6 +8605,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -7773,10 +8624,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -7787,62 +8643,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -7868,6 +8695,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -7879,6 +8730,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -7888,66 +8749,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -7973,6 +8801,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -7984,6 +8842,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -7993,73 +8861,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -8085,6 +8913,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -8096,6 +8942,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -8105,162 +8961,63 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([1, 2], %, $seg01)\n |> angledLine({\n angle: angleToMatchLengthY(seg01, 15, %),\n length: 5\n }, %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst extrusion = extrude(5, sketch001)" - ] - }, - { - "name": "angledLine", - "summary": "Draw a line segment relative to the current origin using the polar", - "description": "measure of some angle and distance.", - "tags": [], - "args": [ - { - "name": "data", - "type": "AngledLineData", - "schema": { - "description": "Data to draw an angled line.", - "anyOf": [ - { - "description": "An angle and length with explicitly named parameters", - "type": "object", - "required": [ - "angle", - "length" - ], - "properties": { - "angle": { - "description": "The angle of the line (in degrees).", - "type": "number", - "format": "double" - }, - "length": { - "description": "The length of the line.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angle and length given as a pair", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - ] - }, - "required": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" }, "on": { "description": "What the sketch is on (can be a plane or a face).", @@ -8279,34 +9036,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -8330,32 +9090,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -8424,23 +9158,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -8463,12 +9181,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -8480,61 +9293,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -8542,6 +9334,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -8552,56 +9357,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -8609,6 +9484,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -8619,50 +9507,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -8674,608 +9618,89 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "path": { - "description": "The path the tag is on.", + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -9301,6 +9726,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -9312,6 +9771,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -9321,63 +9790,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -9403,10 +9842,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -9418,6 +9873,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -9428,6 +9887,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -9437,63 +9906,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -9519,10 +9958,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -9534,6 +9990,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -9544,6 +10009,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -9553,64 +10028,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -9636,13 +10080,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -9651,8 +10115,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -9661,11 +10125,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -9675,62 +10134,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -9756,6 +10186,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -9767,6 +10227,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -9776,66 +10246,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -9861,6 +10298,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -9872,6 +10327,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -9881,73 +10346,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -9973,121 +10398,649 @@ "minItems": 2 } } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -10095,81 +11048,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -10180,64 +11071,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -10245,81 +11115,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -10330,112 +11138,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -10452,32 +11209,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -10488,6 +11219,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -10497,42 +11238,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -10546,28 +11303,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -10582,6 +11319,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -10591,32 +11333,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -10627,6 +11343,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -10636,51 +11362,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -10694,27 +11431,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -10724,38 +11451,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -10769,27 +11506,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -10799,38 +11526,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -10844,27 +11581,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -10874,38 +11601,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -10919,27 +11656,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -10949,38 +11676,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -10990,898 +11727,1041 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + } + } + }, + "required": true + }, + { + "name": "tag", + "type": "TagDeclarator", + "schema": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "value": { - "description": "The paths in the sketch.", + "type": "string" + }, + "digest": { "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "required": false + } + ], + "returnValue": { + "name": "", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "radius": { - "description": "the arc's radius", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { "type": "string", "enum": [ - "Horizontal" + "XY", + "XZ", + "YZ" ] }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { "x": { - "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { "type": "number", "format": "double" } } }, - { - "description": "An angled line to.", + "xAxis": { + "description": "What should the plane’s X axis be?", "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "x", + "y", + "z" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, "x": { - "description": "The x coordinate.", "type": "number", - "format": "double", - "nullable": true + "format": "double" }, "y": { - "description": "The y coordinate.", "type": "number", - "format": "double", - "nullable": true + "format": "double" + }, + "z": { + "type": "number", + "format": "double" } } }, - { - "description": "A base path.", + "yAxis": { + "description": "What should the plane’s Y axis be?", "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "x", + "y", + "z" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "x": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "y": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "y": { + "type": "number", + "format": "double" }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "z": { + "type": "number", + "format": "double" } } - } - ] - } - } - } - }, - "required": true - }, - { - "name": "tag", - "type": "TagDeclarator", - "schema": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "required": false - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { "__meta": { "type": "array", "items": { @@ -11904,63 +12784,40 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ - "plane" + "face" ] }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] + "description": "The tag of the face.", + "type": "string" }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the face’s X axis be?", "type": "object", "required": [ "x", @@ -11983,7 +12840,7 @@ } }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the face’s Y axis be?", "type": "object", "required": [ "x", @@ -12027,50 +12884,6 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" }, "solid": { "description": "The solid the face is on.", @@ -12083,61 +12896,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -12145,6 +12937,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -12155,56 +12960,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -12212,6 +13087,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -12222,50 +13110,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -12277,633 +13221,264 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } }, - "info": { - "description": "Engine information for a tag.", + { + "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "TangentialArcTo" + ] }, - "path": { - "description": "The path the tag is on.", + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "to": { - "description": "The to point.", + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -12915,6 +13490,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -12924,63 +13509,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -13006,10 +13561,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -13021,6 +13593,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -13031,6 +13612,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -13040,63 +13631,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -13122,13 +13683,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -13137,8 +13718,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -13156,64 +13737,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -13239,13 +13789,39 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true }, - "center": { - "description": "the arc's center", + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -13254,8 +13830,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -13264,11 +13840,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -13278,62 +13849,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -13359,78 +13901,11 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" } } }, { - "description": "An angled line to.", + "description": "A base path.", "type": "object", "required": [ "__geoMeta", @@ -13439,31 +13914,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -13475,6 +13930,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -13484,73 +13949,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -13576,183 +14001,579 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "tag": { - "description": "The tag.", + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true }, - "value": { - "type": "string" + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, - { - "description": "An extruded arc.", + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -13763,84 +14584,66 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } - }, + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -13848,74 +14651,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -13923,122 +14718,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -14055,32 +14812,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -14091,6 +14822,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -14100,42 +14841,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -14149,28 +14906,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -14185,6 +14922,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -14194,32 +14936,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -14230,6 +14946,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -14239,51 +14965,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -14297,27 +15034,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -14327,38 +15054,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -14372,27 +15109,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -14402,38 +15129,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -14447,27 +15184,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -14477,38 +15204,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -14522,27 +15259,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -14552,38 +15279,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -14593,892 +15330,912 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> yLineTo(15, %)\n |> angledLine({ angle: 30, length: 15 }, %)\n |> line([8, -10], %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" + ] + }, + { + "name": "angledLineOfXLength", + "summary": "Create a line segment from the current 2-dimensional sketch origin", + "description": "along some angle (in degrees) for some relative length in the 'x' dimension.", + "tags": [], + "args": [ + { + "name": "data", + "type": "AngledLineData", + "schema": { + "description": "Data to draw an angled line.", + "anyOf": [ + { + "description": "An angle and length with explicitly named parameters", + "type": "object", + "required": [ + "angle", + "length" + ], + "properties": { + "angle": { + "description": "The angle of the line (in degrees).", + "type": "number", + "format": "double" + }, + "length": { + "description": "The length of the line.", + "type": "number", + "format": "double" + } + } + }, + { + "description": "An angle and length given as a pair", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + } + ] + }, + "required": true + }, + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> yLineTo(15, %)\n |> angledLine({ angle: 30, length: 15 }, %)\n |> line([8, -10], %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" - ] - }, - { - "name": "angledLineOfXLength", - "summary": "Create a line segment from the current 2-dimensional sketch origin", - "description": "along some angle (in degrees) for some relative length in the 'x' dimension.", - "tags": [], - "args": [ - { - "name": "data", - "type": "AngledLineData", - "schema": { - "description": "Data to draw an angled line.", - "anyOf": [ - { - "description": "An angle and length with explicitly named parameters", - "type": "object", - "required": [ - "angle", - "length" - ], - "properties": { - "angle": { - "description": "The angle of the line (in degrees).", - "type": "number", - "format": "double" - }, - "length": { - "description": "The length of the line.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angle and length given as a pair", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - ] - }, - "required": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -15496,34 +16253,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -15547,32 +16307,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -15641,23 +16375,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -15680,12 +16398,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -15697,61 +16510,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -15759,66 +16551,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -15826,81 +16626,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -15913,569 +16670,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -16493,31 +16856,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -16529,6 +16872,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -16538,63 +16891,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 2, - "minItems": 2 + "nullable": true }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -16620,10 +16943,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -16635,6 +16974,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -16645,6 +16988,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -16654,63 +17007,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -16736,10 +17059,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -16751,6 +17090,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -16761,6 +17104,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -16770,64 +17123,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -16853,10 +17175,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -16868,6 +17207,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -16878,10 +17226,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -16892,62 +17245,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -16973,6 +17297,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -16984,6 +17332,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -16993,66 +17351,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -17078,6 +17403,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -17089,6 +17444,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -17098,73 +17463,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -17190,6 +17515,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -17201,6 +17544,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -17210,449 +17563,853 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "Geometry metadata.", + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "__meta", + "value" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "tag": { - "description": "The tag.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } }, - "y": { + "height": { + "description": "The height of the solid.", "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true }, - "y": { - "type": "number", - "format": "double" + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true }, - "z": { - "type": "number", - "format": "double" + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -17669,32 +18426,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -17705,6 +18436,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -17714,42 +18455,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -17763,28 +18520,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -17799,6 +18536,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -17808,32 +18550,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -17844,6 +18560,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -17853,51 +18579,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -17911,27 +18648,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -17941,38 +18668,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -17986,27 +18723,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -18016,38 +18743,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -18061,27 +18798,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -18091,38 +18818,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -18136,27 +18873,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -18166,38 +18893,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -18207,791 +18944,54 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 2, + "minItems": 2 } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } @@ -19009,29 +19009,29 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true @@ -19053,61 +19053,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", "type": "array", "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -19121,41 +19162,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -19176,6 +19887,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -19244,23 +19978,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -19283,12 +20001,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -19300,61 +20113,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -19362,66 +20154,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -19429,81 +20229,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -19516,569 +20273,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -20096,31 +20459,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -20132,6 +20475,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -20141,63 +20494,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -20223,10 +20546,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -20238,6 +20577,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -20248,6 +20591,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -20257,63 +20610,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -20339,10 +20662,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -20354,9 +20693,23 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", - "type": "array", + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", "items": { "type": "number", "format": "double" @@ -20373,64 +20726,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -20456,10 +20778,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -20471,6 +20810,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -20481,10 +20829,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -20495,62 +20848,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -20576,6 +20900,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -20587,6 +20935,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -20596,66 +20954,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -20681,6 +21006,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -20692,6 +21047,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -20701,73 +21066,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -20793,6 +21118,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -20804,6 +21147,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -20813,451 +21166,855 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "Geometry metadata.", + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "__meta", + "value" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "tag": { - "description": "The tag.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } @@ -21272,32 +22029,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -21308,6 +22039,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -21317,42 +22058,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -21366,28 +22123,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -21402,6 +22139,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -21411,32 +22153,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -21447,6 +22163,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -21456,51 +22182,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -21514,27 +22251,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -21544,38 +22271,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -21589,27 +22326,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -21619,38 +22346,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -21664,27 +22401,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -21694,38 +22421,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -21739,27 +22476,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -21769,38 +22496,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -21810,791 +22547,54 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 2, + "minItems": 2 } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } @@ -22667,61 +22667,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -22735,41 +22776,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -22790,6 +23501,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -22858,23 +23592,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -22897,12 +23615,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -22914,61 +23727,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -22976,66 +23768,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -23043,81 +23843,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -23130,569 +23887,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -23710,31 +24073,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -23746,6 +24089,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -23755,63 +24108,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -23837,10 +24160,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -23852,6 +24191,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -23862,6 +24205,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -23871,63 +24224,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -23953,10 +24276,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -23968,6 +24307,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -23978,6 +24321,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -23987,64 +24340,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -24070,10 +24392,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -24085,6 +24424,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -24095,10 +24443,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -24109,62 +24462,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -24190,6 +24514,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -24201,6 +24549,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -24210,66 +24568,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -24295,6 +24620,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -24306,6 +24661,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -24315,73 +24680,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -24407,6 +24732,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -24418,6 +24761,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -24427,6 +24780,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -24437,91 +24803,678 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "value": { - "type": "string" + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -24529,74 +25482,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] } } }, { - "description": "An extruded arc.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -24604,272 +25549,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -24886,32 +25643,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -24922,6 +25653,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -24931,42 +25672,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -24980,28 +25737,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -25016,6 +25753,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -25025,32 +25767,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -25061,6 +25777,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -25070,51 +25796,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -25128,27 +25865,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -25158,38 +25885,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -25203,27 +25940,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -25233,38 +25960,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -25278,27 +26015,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -25308,38 +26035,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -25353,27 +26090,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -25383,38 +26110,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -25424,881 +26161,901 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + } + } + }, + "required": true + }, + { + "name": "tag", + "type": "TagDeclarator", + "schema": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "value": { - "description": "The paths in the sketch.", + "type": "string" + }, + "digest": { "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "required": false + } + ], + "returnValue": { + "name": "", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 2, + "minItems": 2 } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "radius": { - "description": "the arc's radius", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true + "format": "double" }, - "y": { - "description": "The y coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] - } - } - } - }, - "required": true - }, - { - "name": "tag", - "type": "TagDeclarator", - "schema": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "required": false - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -26316,34 +27073,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -26367,32 +27127,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -26461,23 +27195,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -26500,12 +27218,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -26517,61 +27330,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -26579,6 +27371,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -26589,56 +27394,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -26646,6 +27521,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -26656,50 +27544,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -26711,608 +27655,89 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "ToPoint" + ] }, - "path": { - "description": "The path the tag is on.", + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -27338,6 +27763,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -27349,6 +27808,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -27358,63 +27827,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -27440,10 +27879,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -27455,6 +27910,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -27465,6 +27924,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -27474,63 +27943,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -27556,10 +27995,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -27571,6 +28027,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -27581,6 +28046,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -27590,64 +28065,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -27673,13 +28117,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -27688,8 +28152,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -27698,11 +28162,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -27712,62 +28171,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -27793,6 +28223,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -27804,6 +28264,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -27813,66 +28283,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -27898,6 +28335,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -27909,6 +28364,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -27918,73 +28383,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -28010,183 +28435,579 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "tag": { - "description": "The tag.", + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true }, - "value": { - "type": "string" + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, - { - "description": "An extruded arc.", + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -28197,84 +29018,66 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } - }, + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -28282,74 +29085,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -28357,122 +29152,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -28489,32 +29246,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -28525,6 +29256,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -28534,42 +29275,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -28583,28 +29340,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -28619,6 +29356,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -28628,32 +29370,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -28664,6 +29380,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -28673,51 +29399,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -28731,11 +29468,53 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, "faceId": { "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "id": { "description": "The id of the geometry.", "type": "string", @@ -28751,6 +29530,29 @@ }, "maxItems": 2, "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, "tag": { "description": "The tag.", @@ -28761,43 +29563,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -28806,11 +29618,53 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, "faceId": { - "description": "The face id for the extrude plane.", + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "id": { "description": "The id of the geometry.", "type": "string", @@ -28826,6 +29680,29 @@ }, "maxItems": 2, "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" }, "tag": { "description": "The tag.", @@ -28836,56 +29713,241 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - { - "description": "Geometry metadata.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> angledLineOfYLength({ angle: 45, length: 10 }, %)\n |> line([0, 10], %)\n |> angledLineOfYLength({ angle: 135, length: 10 }, %)\n |> line([-10, 0], %)\n |> line([0, -30], %)\n\nconst example = extrude(10, exampleSketch)" + ] + }, + { + "name": "angledLineThatIntersects", + "summary": "Draw an angled line from the current origin, constructing a line segment", + "description": "such that the newly created line intersects the desired target line segment.", + "tags": [], + "args": [ + { + "name": "data", + "type": "AngledLineThatIntersectsData", + "schema": { + "description": "Data for drawing an angled line that intersects with a given line.", + "type": "object", + "required": [ + "angle", + "intersectTag" + ], + "properties": { + "angle": { + "description": "The angle of the line.", + "type": "number", + "format": "double" + }, + "intersectTag": { + "description": "The tag of the line to intersect with.", + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "end", + "start", + "value" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { "id": { "description": "The id of the geometry.", "type": "string", @@ -28901,6 +29963,35 @@ }, "maxItems": 2, "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, "tag": { "description": "The tag.", @@ -28911,6 +30002,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -28921,28 +30025,100 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -28956,11 +30132,53 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, "faceId": { - "description": "The id for the fillet surface.", + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "id": { "description": "The id of the geometry.", "type": "string", @@ -28976,6 +30194,29 @@ }, "maxItems": 2, "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" }, "tag": { "description": "The tag.", @@ -28986,38 +30227,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -29027,1352 +30278,981 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } + }, + "offset": { + "description": "The offset from the intersecting line.", + "type": "number", + "format": "double", + "nullable": true } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + } + }, + "required": true + }, + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { + "y": { + "description": "The y coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ { - "description": "A path that is horizontal.", + "description": "A plane.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", + "__meta", + "id", + "origin", "type", - "x" + "value", + "xAxis", + "yAxis", + "zAxis" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", "type": "object", "required": [ - "id", - "sourceRange" + "x", + "y", + "z" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "x": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "y": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "z": { + "type": "number", + "format": "double" } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + "xAxis": { + "description": "What should the plane’s X axis be?", "type": "object", "required": [ - "end", - "start", - "value" + "x", + "y", + "z" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "x": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "y": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "z": { + "type": "number", + "format": "double" } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + "yAxis": { + "description": "What should the plane’s Y axis be?", "type": "object", "required": [ - "end", - "start", - "value" + "x", + "y", + "z" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "x": { + "type": "number", + "format": "double" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "y": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" + "z": { + "type": "number", + "format": "double" } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> angledLineOfYLength({ angle: 45, length: 10 }, %)\n |> line([0, 10], %)\n |> angledLineOfYLength({ angle: 135, length: 10 }, %)\n |> line([-10, 0], %)\n |> line([0, -30], %)\n\nconst example = extrude(10, exampleSketch)" - ] - }, - { - "name": "angledLineThatIntersects", - "summary": "Draw an angled line from the current origin, constructing a line segment", - "description": "such that the newly created line intersects the desired target line segment.", - "tags": [], - "args": [ - { - "name": "data", - "type": "AngledLineThatIntersectsData", - "schema": { - "description": "Data for drawing an angled line that intersects with a given line.", - "type": "object", - "required": [ - "angle", - "intersectTag" - ], - "properties": { - "angle": { - "description": "The angle of the line.", - "type": "number", - "format": "double" - }, - "intersectTag": { - "description": "The tag of the line to intersect with.", - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" }, - "path": { - "description": "The path the tag is on.", + "zAxis": { + "description": "The z-axis (normal).", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "x", + "y", + "z" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } + "x": { + "type": "number", + "format": "double" }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } + "y": { + "type": "number", + "format": "double" }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } + "z": { + "type": "number", + "format": "double" } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - }, - "offset": { - "description": "The offset from the intersecting line.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - "required": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + } }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { "__meta": { "type": "array", "items": { @@ -30395,63 +31275,40 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ - "plane" + "face" ] }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] + "description": "The tag of the face.", + "type": "string" }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the face’s X axis be?", "type": "object", "required": [ "x", @@ -30474,7 +31331,7 @@ } }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the face’s Y axis be?", "type": "object", "required": [ "x", @@ -30518,50 +31375,6 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" }, "solid": { "description": "The solid the face is on.", @@ -30574,61 +31387,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -30636,66 +31428,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -30703,81 +31503,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -30790,569 +31547,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -31370,31 +31733,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -31406,6 +31749,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -31415,63 +31768,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -31497,10 +31820,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -31512,6 +31851,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -31522,6 +31865,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -31531,63 +31884,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -31613,11 +31936,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, "center": { "description": "the arc's center", "type": "array", @@ -31628,6 +31967,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -31638,6 +31981,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -31647,64 +32000,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -31730,10 +32052,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -31745,6 +32084,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -31755,10 +32103,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -31769,62 +32122,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -31850,6 +32174,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -31861,6 +32209,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -31870,66 +32228,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -31955,6 +32280,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -31966,6 +32321,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -31975,73 +32340,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -32067,6 +32392,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -32078,6 +32421,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -32087,449 +32440,853 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "Geometry metadata.", + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "__meta", + "value" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "tag": { - "description": "The tag.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } }, - "y": { + "height": { + "description": "The height of the solid.", "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -32546,32 +33303,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -32582,6 +33313,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -32591,42 +33332,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -32640,28 +33397,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -32676,6 +33413,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -32685,32 +33427,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -32721,6 +33437,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -32730,51 +33456,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -32788,27 +33525,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -32818,38 +33545,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -32863,27 +33600,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -32893,38 +33620,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -32938,27 +33675,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -32968,38 +33695,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -33013,27 +33750,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -33043,38 +33770,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -33084,791 +33821,54 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 2, + "minItems": 2 } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } @@ -33886,29 +33886,29 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true @@ -33930,61 +33930,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -33998,41 +34039,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -34053,6 +34764,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -34121,23 +34855,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -34160,12 +34878,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -34177,61 +34990,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -34239,66 +35031,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -34306,6 +35106,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -34316,71 +35129,90 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -34393,569 +35225,100 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -34973,31 +35336,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -35009,6 +35352,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -35018,63 +35371,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -35100,10 +35423,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -35115,6 +35454,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -35125,6 +35468,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -35134,63 +35487,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -35216,10 +35539,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -35231,6 +35570,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -35241,6 +35584,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -35250,64 +35603,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -35333,10 +35655,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -35348,6 +35687,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -35358,10 +35706,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -35372,6 +35725,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -35382,52 +35748,10 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -35453,6 +35777,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -35464,6 +35812,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -35473,66 +35831,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -35558,6 +35883,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -35569,6 +35924,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -35578,73 +35943,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -35670,6 +35995,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -35681,6 +36024,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -35690,6 +36043,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -35700,91 +36066,678 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "value": { - "type": "string" + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -35792,149 +36745,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] } } }, { - "description": "An extruded arc.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", + "edgeId": { + "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -35942,81 +36812,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -36027,112 +36835,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -36149,32 +36906,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -36185,6 +36916,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -36194,42 +36935,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -36243,28 +37000,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -36279,6 +37016,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -36288,32 +37030,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -36324,6 +37040,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -36333,51 +37059,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -36391,27 +37128,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -36421,38 +37148,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -36466,27 +37203,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -36496,38 +37223,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -36541,27 +37278,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -36571,38 +37298,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -36616,27 +37353,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -36646,38 +37373,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -36687,903 +37424,439 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> lineTo([5, 10], %)\n |> lineTo([-10, 10], %, $lineToIntersect)\n |> lineTo([0, 20], %)\n |> angledLineThatIntersects({\n angle: 80,\n intersectTag: lineToIntersect,\n offset: 10\n }, %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" + ] + }, + { + "name": "angledLineToX", + "summary": "Create a line segment from the current 2-dimensional sketch origin", + "description": "along some angle (in degrees) for some length, ending at the provided value in the 'x' dimension.", + "tags": [], + "args": [ + { + "name": "data", + "type": "AngledLineToData", + "schema": { + "description": "Data to draw an angled line to a point.", + "type": "object", + "required": [ + "angle", + "to" + ], + "properties": { + "angle": { + "description": "The angle of the line.", + "type": "number", + "format": "double" + }, + "to": { + "description": "The point to draw to.", + "type": "number", + "format": "double" + } + } + }, + "required": true + }, + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } + "nullable": true }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> lineTo([5, 10], %)\n |> lineTo([-10, 10], %, $lineToIntersect)\n |> lineTo([0, 20], %)\n |> angledLineThatIntersects({\n angle: 80,\n intersectTag: lineToIntersect,\n offset: 10\n }, %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" - ] - }, - { - "name": "angledLineToX", - "summary": "Create a line segment from the current 2-dimensional sketch origin", - "description": "along some angle (in degrees) for some length, ending at the provided value in the 'x' dimension.", - "tags": [], - "args": [ - { - "name": "data", - "type": "AngledLineToData", - "schema": { - "description": "Data to draw an angled line to a point.", - "type": "object", - "required": [ - "angle", - "to" - ], - "properties": { - "angle": { - "description": "The angle of the line.", - "type": "number", - "format": "double" - }, - "to": { - "description": "The point to draw to.", - "type": "number", - "format": "double" - } - } - }, - "required": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -37597,41 +37870,479 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -37652,6 +38363,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -37720,23 +38454,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -37759,12 +38477,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -37776,61 +38589,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -37838,6 +38630,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -37848,56 +38653,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -37905,6 +38780,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -37915,50 +38803,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -37970,608 +38914,89 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "ToPoint" + ] }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -38597,6 +39022,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -38608,6 +39067,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -38617,63 +39086,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -38699,10 +39138,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -38714,6 +39169,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -38724,6 +39183,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -38733,63 +39202,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -38815,10 +39254,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -38830,6 +39286,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -38840,6 +39305,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -38849,64 +39324,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -38932,13 +39376,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -38947,8 +39411,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -38957,11 +39421,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -38971,62 +39430,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -39052,6 +39482,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -39063,6 +39523,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -39072,66 +39542,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -39157,6 +39594,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -39168,6 +39623,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -39177,73 +39642,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -39269,121 +39694,649 @@ "minItems": 2 } } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -39391,81 +40344,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -39476,64 +40367,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -39541,81 +40411,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -39626,112 +40434,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -39748,32 +40505,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -39784,6 +40515,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -39793,42 +40534,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -39842,28 +40599,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -39878,6 +40615,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -39887,32 +40629,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -39923,6 +40639,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -39932,51 +40658,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -39990,27 +40727,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -40020,38 +40747,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -40065,27 +40802,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -40095,38 +40822,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -40140,27 +40877,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -40170,38 +40897,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -40215,27 +40952,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -40245,38 +40972,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -40286,907 +41023,565 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + } + } + }, + "required": true + }, + { + "name": "tag", + "type": "TagDeclarator", + "schema": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "value": { - "description": "The paths in the sketch.", + "type": "string" + }, + "digest": { "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "required": false + } + ], + "returnValue": { + "name": "", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "radius": { - "description": "the arc's radius", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "value": { + "type": "string" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true + "format": "double" }, - "y": { - "description": "The y coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - { - "name": "tag", - "type": "TagDeclarator", - "schema": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "required": false - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -41200,155 +41595,99 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -41362,78 +41701,531 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -41441,6 +42233,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -41451,56 +42256,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -41508,6 +42383,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -41518,50 +42406,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -41573,633 +42517,148 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } }, - "info": { - "description": "Engine information for a tag.", + { + "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "enum": [ + "TangentialArcTo" + ] }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -42211,6 +42670,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -42220,63 +42689,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -42302,10 +42741,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -42317,6 +42772,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -42327,6 +42786,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -42336,63 +42805,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -42418,10 +42857,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -42433,6 +42889,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -42443,6 +42908,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -42452,64 +42927,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -42535,13 +42979,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -42550,8 +43014,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -42560,11 +43024,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -42574,62 +43033,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -42655,6 +43085,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -42666,6 +43126,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -42675,66 +43145,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -42760,6 +43197,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -42771,6 +43226,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -42780,73 +43245,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -42872,121 +43297,649 @@ "minItems": 2 } } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -42994,81 +43947,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -43079,64 +43970,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -43144,81 +44014,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -43229,112 +44037,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -43351,32 +44108,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -43387,6 +44118,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -43396,42 +44137,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -43445,28 +44202,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -43481,6 +44218,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -43490,32 +44232,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -43526,6 +44242,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -43535,51 +44261,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -43593,27 +44330,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -43623,38 +44350,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -43668,27 +44405,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -43698,38 +44425,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -43743,27 +44480,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -43773,38 +44500,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -43818,27 +44555,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -43848,38 +44575,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -43889,903 +44626,561 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> angledLineToX({ angle: 30, to: 10 }, %)\n |> line([0, 10], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" + ] + }, + { + "name": "angledLineToY", + "summary": "Create a line segment from the current 2-dimensional sketch origin", + "description": "along some angle (in degrees) for some length, ending at the provided value in the 'y' dimension.", + "tags": [], + "args": [ + { + "name": "data", + "type": "AngledLineToData", + "schema": { + "description": "Data to draw an angled line to a point.", + "type": "object", + "required": [ + "angle", + "to" + ], + "properties": { + "angle": { + "description": "The angle of the line.", + "type": "number", + "format": "double" + }, + "to": { + "description": "The point to draw to.", + "type": "number", + "format": "double" + } + } + }, + "required": true + }, + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> angledLineToX({ angle: 30, to: 10 }, %)\n |> line([0, 10], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" - ] - }, - { - "name": "angledLineToY", - "summary": "Create a line segment from the current 2-dimensional sketch origin", - "description": "along some angle (in degrees) for some length, ending at the provided value in the 'y' dimension.", - "tags": [], - "args": [ - { - "name": "data", - "type": "AngledLineToData", - "schema": { - "description": "Data to draw an angled line to a point.", - "type": "object", - "required": [ - "angle", - "to" - ], - "properties": { - "angle": { - "description": "The angle of the line.", - "type": "number", - "format": "double" - }, - "to": { - "description": "The point to draw to.", - "type": "number", - "format": "double" - } - } - }, - "required": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -44799,155 +45194,99 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -44961,78 +45300,531 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -45040,6 +45832,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -45050,56 +45855,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -45107,6 +45982,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -45117,50 +46005,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -45172,608 +46116,89 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "ToPoint" + ] }, - "path": { - "description": "The path the tag is on.", + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -45799,6 +46224,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -45810,6 +46269,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -45819,63 +46288,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -45901,10 +46340,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -45916,6 +46371,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -45926,6 +46385,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -45935,63 +46404,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -46017,10 +46456,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -46032,6 +46488,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -46042,6 +46507,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -46051,64 +46526,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -46134,13 +46578,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -46149,8 +46613,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -46159,11 +46623,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -46173,62 +46632,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -46254,6 +46684,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -46265,6 +46725,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -46274,66 +46744,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -46359,6 +46796,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -46370,6 +46825,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -46379,73 +46844,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -46471,183 +46896,579 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, - { - "description": "An extruded arc.", + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -46658,84 +47479,66 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } - }, + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -46743,74 +47546,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -46818,122 +47613,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -46950,32 +47707,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -46986,6 +47717,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -46995,42 +47736,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -47044,28 +47801,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -47080,6 +47817,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -47089,32 +47831,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -47125,6 +47841,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -47134,51 +47860,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -47192,27 +47929,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -47222,38 +47949,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -47267,27 +48004,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -47297,38 +48024,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -47342,27 +48079,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -47372,38 +48099,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -47417,27 +48154,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -47447,38 +48174,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -47488,881 +48225,901 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + } + } + }, + "required": true + }, + { + "name": "tag", + "type": "TagDeclarator", + "schema": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "value": { - "description": "The paths in the sketch.", + "type": "string" + }, + "digest": { "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "required": false + } + ], + "returnValue": { + "name": "", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "radius": { - "description": "the arc's radius", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true + "format": "double" }, - "y": { - "description": "The y coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] - } - } - } - }, - "required": true - }, - { - "name": "tag", - "type": "TagDeclarator", - "schema": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "required": false - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -48380,34 +49137,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -48431,32 +49191,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -48525,23 +49259,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -48564,12 +49282,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -48581,61 +49394,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -48643,66 +49435,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -48710,81 +49510,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -48797,569 +49554,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -49377,31 +49740,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -49413,6 +49756,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -49422,63 +49775,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 2, - "minItems": 2 + "nullable": true }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -49504,10 +49827,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -49519,6 +49858,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -49529,6 +49872,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -49538,63 +49891,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -49620,10 +49943,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -49635,6 +49974,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -49645,6 +49988,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -49654,64 +50007,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -49737,10 +50059,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -49752,6 +50091,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -49762,10 +50110,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -49776,62 +50129,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -49857,6 +50181,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -49868,6 +50216,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -49877,66 +50235,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -49962,6 +50287,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -49973,6 +50328,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -49982,73 +50347,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -50074,6 +50399,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -50085,6 +50428,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -50094,449 +50447,853 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "Geometry metadata.", + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "__meta", + "value" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "tag": { - "description": "The tag.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } }, - "y": { + "height": { + "description": "The height of the solid.", "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true }, - "y": { - "type": "number", - "format": "double" + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true }, - "z": { - "type": "number", - "format": "double" + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -50553,32 +51310,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -50589,6 +51320,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -50598,42 +51339,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -50647,28 +51404,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -50683,6 +51420,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -50692,32 +51434,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -50728,6 +51444,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -50737,51 +51463,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -50795,27 +51532,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -50825,38 +51552,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -50870,27 +51607,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -50900,38 +51627,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -50945,27 +51682,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -50975,38 +51702,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -51020,27 +51757,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -51050,38 +51777,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -51091,791 +51828,54 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 2, + "minItems": 2 } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } @@ -51909,15 +51909,15 @@ "radius" ], "properties": { - "angleEnd": { - "description": "The end angle.", + "angleStart": { + "description": "The start angle.", "type": "number", "format": "double", "maximum": 360.0, "minimum": -360.0 }, - "angleStart": { - "description": "The start angle.", + "angleEnd": { + "description": "The end angle.", "type": "number", "format": "double", "maximum": 360.0, @@ -51949,11 +51949,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "The radius.", - "type": "number", - "format": "double" - }, "to": { "description": "The to point.", "type": "array", @@ -51963,6 +51958,11 @@ }, "maxItems": 2, "minItems": 2 + }, + "radius": { + "description": "The radius.", + "type": "number", + "format": "double" } } } @@ -51984,61 +51984,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", "type": "array", "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -52052,41 +52093,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -52107,6 +52818,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -52175,23 +52909,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -52214,12 +52932,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -52231,61 +53044,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -52293,66 +53085,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -52360,81 +53160,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -52447,569 +53204,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -53027,31 +53390,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -53063,6 +53406,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -53072,63 +53425,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -53154,10 +53477,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -53169,6 +53508,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -53179,6 +53522,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -53188,63 +53541,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -53270,10 +53593,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -53285,6 +53624,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -53295,73 +53638,52 @@ "maxItems": 2, "minItems": 2 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", "start", "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -53387,10 +53709,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -53402,6 +53741,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -53412,10 +53760,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -53426,62 +53779,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -53507,6 +53831,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -53518,6 +53866,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -53527,66 +53885,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -53612,6 +53937,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -53623,6 +53978,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -53632,73 +53997,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -53724,6 +54049,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -53735,6 +54078,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -53744,453 +54097,857 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "Geometry metadata.", + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "__meta", + "value" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "tag": { - "description": "The tag.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - } - } + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } } ] }, @@ -54203,32 +54960,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -54239,6 +54970,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -54248,42 +54989,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -54297,28 +55054,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -54333,6 +55070,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -54342,32 +55084,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -54378,6 +55094,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -54387,51 +55113,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -54445,27 +55182,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -54475,38 +55202,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -54520,27 +55257,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -54550,38 +55277,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -54595,27 +55332,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -54625,38 +55352,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -54670,27 +55407,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -54700,38 +55427,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -54741,791 +55478,54 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 2, + "minItems": 2 } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } @@ -55543,29 +55543,29 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true @@ -55587,61 +55587,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -55655,41 +55696,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -55710,6 +56421,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -55778,23 +56512,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -55817,12 +56535,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -55834,61 +56647,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -55896,66 +56688,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -55963,6 +56763,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -55973,71 +56786,90 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -56050,569 +56882,100 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -56630,31 +56993,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -56666,6 +57009,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -56675,63 +57028,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -56757,10 +57080,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -56772,6 +57111,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -56782,6 +57125,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -56791,63 +57144,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -56873,10 +57196,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -56888,6 +57227,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -56898,6 +57241,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -56907,64 +57260,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -56990,10 +57312,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -57005,6 +57344,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -57015,10 +57363,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -57029,62 +57382,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -57110,6 +57434,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -57121,6 +57469,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -57130,66 +57488,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -57215,6 +57540,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -57226,6 +57581,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -57235,73 +57600,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -57327,6 +57652,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -57338,6 +57681,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -57347,6 +57700,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -57357,91 +57723,678 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "value": { - "type": "string" + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -57449,149 +58402,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] } } }, { - "description": "An extruded arc.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" + "length": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", + "edgeId": { + "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -57599,81 +58469,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -57684,112 +58492,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -57806,32 +58563,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -57842,6 +58573,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -57851,42 +58592,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -57900,28 +58657,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -57936,6 +58673,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -57945,32 +58687,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -57981,6 +58697,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -57990,51 +58716,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -58048,27 +58785,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -58078,38 +58805,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -58123,27 +58860,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -58153,38 +58880,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -58198,27 +58935,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -58228,38 +58955,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -58273,27 +59010,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -58303,38 +59030,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -58344,891 +59081,427 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> arc({\n angleStart: 0,\n angleEnd: 280,\n radius: 16\n }, %)\n |> close(%)" + ] + }, + { + "name": "arrayReduce", + "summary": "Take a starting value. Then, for each element of an array, calculate the next value,", + "description": "using the previous value and the element.", + "tags": [], + "args": [ + { + "name": "array", + "type": "[u64]", + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "uint64", + "minimum": 0.0 + } + }, + "required": true + }, + { + "name": "start", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> arc({\n angleStart: 0,\n angleEnd: 280,\n radius: 16\n }, %)\n |> close(%)" - ] - }, - { - "name": "arrayReduce", - "summary": "Take a starting value. Then, for each element of an array, calculate the next value,", - "description": "using the previous value and the element.", - "tags": [], - "args": [ - { - "name": "array", - "type": "[u64]", - "schema": { - "type": "array", - "items": { - "type": "integer", - "format": "uint64", - "minimum": 0.0 - } - }, - "required": true - }, - { - "name": "start", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -59242,60 +59515,521 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } }, "xAxis": { "description": "What should the plane’s X axis be?", @@ -59365,23 +60099,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -59404,12 +60122,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -59421,61 +60234,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -59483,6 +60275,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -59493,56 +60298,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -59550,6 +60425,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -59560,50 +60448,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -59615,608 +60559,89 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "path": { - "description": "The path the tag is on.", + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -60242,6 +60667,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -60253,6 +60712,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -60262,63 +60731,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -60344,10 +60783,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -60359,6 +60814,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -60369,6 +60828,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -60378,63 +60847,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -60460,10 +60899,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -60475,6 +60931,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -60485,6 +60950,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -60494,64 +60969,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -60577,13 +61021,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -60592,8 +61056,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -60602,11 +61066,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -60616,62 +61075,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -60697,6 +61127,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -60708,6 +61168,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -60717,66 +61187,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -60802,6 +61239,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -60813,6 +61268,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -60822,73 +61287,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -60914,121 +61339,649 @@ "minItems": 2 } } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -61036,81 +61989,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -61121,64 +62012,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -61186,81 +62056,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -61271,128 +62079,133 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "type": { - "type": "string", - "enum": [ - "face" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + ] + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "value": { - "description": "The tag of the face.", "type": "string" }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } - } - } - ] - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -61418,62 +62231,6 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 } } }, @@ -61487,28 +62244,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -61523,6 +62260,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -61532,32 +62274,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -61568,6 +62284,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -61577,51 +62303,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -61635,27 +62372,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -61665,38 +62392,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -61710,27 +62447,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -61740,38 +62467,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -61785,27 +62522,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -61815,38 +62542,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -61860,27 +62597,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -61890,38 +62617,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -61931,849 +62668,869 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + { + "name": "reduce_fn", + "type": "FunctionParam", + "schema": { + "type": "null" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "radius": { - "description": "the arc's radius", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true + "format": "double" }, - "y": { - "description": "The y coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] - } - } - } - }, - "required": true - }, - { - "name": "reduce_fn", - "type": "FunctionParam", - "schema": { - "type": "null" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -62791,34 +63548,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -62842,32 +63602,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -62936,23 +63670,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -62975,12 +63693,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -62992,61 +63805,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -63054,6 +63846,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -63064,56 +63869,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -63121,6 +63996,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -63131,50 +64019,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -63186,682 +64130,370 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } }, - "info": { - "description": "Engine information for a tag.", + { + "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "TangentialArcTo" + ] }, - "path": { - "description": "The path the tag is on.", + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "to": { - "description": "The to point.", + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { "type": "string", - "format": "uuid" + "enum": [ + "Circle" + ] }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", + "center": { + "description": "the arc's center", "type": "array", "items": { "type": "number", @@ -63870,58 +64502,17 @@ "maxItems": 2, "minItems": 2 }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" }, "ccw": { "description": "arc's direction", "type": "boolean" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -63930,8 +64521,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -63949,63 +64540,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -64031,13 +64592,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -64046,8 +64627,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -64065,64 +64646,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -64148,13 +64698,39 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true }, - "center": { - "description": "the arc's center", + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -64163,8 +64739,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -64173,11 +64749,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -64187,62 +64758,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -64268,78 +64810,11 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" } } }, { - "description": "An angled line to.", + "description": "A base path.", "type": "object", "required": [ "__geoMeta", @@ -64348,31 +64823,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -64384,6 +64839,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -64393,73 +64858,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -64485,183 +64910,579 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, - { - "description": "An extruded arc.", + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -64672,84 +65493,66 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } - }, + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -64757,74 +65560,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -64832,122 +65627,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -64964,32 +65721,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -65000,6 +65731,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -65009,42 +65750,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -65058,28 +65815,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -65094,6 +65831,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -65103,32 +65845,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -65139,6 +65855,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -65148,51 +65874,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -65206,27 +65943,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -65236,38 +65963,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -65281,27 +66018,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -65311,38 +66038,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -65356,27 +66093,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -65386,38 +66113,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -65431,27 +66168,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -65461,38 +66188,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -65502,1262 +66239,1405 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "fn decagon = (radius) => {\n let step = 1 / 10 * tau()\n let sketch001 = startSketchAt([cos(0) * radius, sin(0) * radius])\n return arrayReduce([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], sketch001, (i, sg) => {\n let x = cos(step * i) * radius\n let y = sin(step * i) * radius\n return lineTo([x, y], sg)\n})\n}\ndecagon(5.0)\n |> close(%)" + ] + }, + { + "name": "asin", + "summary": "Compute the arcsine of a number (in radians).", + "description": "", + "tags": [ + "math" + ], + "args": [ + { + "name": "num", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle: toDegrees(asin(0.5)),\n length: 20\n }, %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst extrude001 = extrude(5, sketch001)" + ] + }, + { + "name": "assert", + "summary": "Check a value at runtime, and raise an error if the argument provided", + "description": "is false.", + "tags": [], + "args": [ + { + "name": "data", + "type": "bool", + "schema": { + "type": "boolean" + }, + "required": true + }, + { + "name": "message", + "type": "string", + "schema": { + "type": "string" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "()", + "schema": { + "type": "null" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const myVar = true\nassert(myVar, \"should always be true\")" + ] + }, + { + "name": "assertEqual", + "summary": "Check that a numerical value equals another at runtime,", + "description": "otherwise raise an error.", + "tags": [], + "args": [ + { + "name": "left", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "right", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "epsilon", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "message", + "type": "string", + "schema": { + "type": "string" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "()", + "schema": { + "type": "null" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "let n = 1.0285\nlet o = 1.0286\nassertEqual(n, o, 0.01, \"n is within the given tolerance for o\")" + ] + }, + { + "name": "assertGreaterThan", + "summary": "Check that a numerical value is greater than another at runtime,", + "description": "otherwise raise an error.", + "tags": [], + "args": [ + { + "name": "left", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "right", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "message", + "type": "string", + "schema": { + "type": "string" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "()", + "schema": { + "type": "null" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "assertGreaterThan(2, 1, \"2 is greater than 1\")" + ] + }, + { + "name": "assertGreaterThanOrEq", + "summary": "Check that a numerical value is greater than or equal to another at runtime,", + "description": "otherwise raise an error.", + "tags": [], + "args": [ + { + "name": "left", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "right", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "message", + "type": "string", + "schema": { + "type": "string" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "()", + "schema": { + "type": "null" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "assertGreaterThanOrEq(2, 1, \"2 is greater than 1\")\nassertGreaterThanOrEq(1, 1, \"1 is equal to 1\")" + ] + }, + { + "name": "assertLessThan", + "summary": "Check that a numerical value is less than to another at runtime,", + "description": "otherwise raise an error.", + "tags": [], + "args": [ + { + "name": "left", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "right", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "message", + "type": "string", + "schema": { + "type": "string" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "()", + "schema": { + "type": "null" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "assertLessThan(1, 2, \"1 is less than 2\")" + ] + }, + { + "name": "assertLessThanOrEq", + "summary": "Check that a numerical value is less than or equal to another at runtime,", + "description": "otherwise raise an error.", + "tags": [], + "args": [ + { + "name": "left", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "right", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "message", + "type": "string", + "schema": { + "type": "string" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "()", + "schema": { + "type": "null" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "assertLessThanOrEq(1, 2, \"1 is less than 2\")\nassertLessThanOrEq(1, 1, \"1 is equal to 1\")" + ] + }, + { + "name": "atan", + "summary": "Compute the arctangent of a number (in radians).", + "description": "", + "tags": [ + "math" + ], + "args": [ + { + "name": "num", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle: toDegrees(atan(1.25)),\n length: 20\n }, %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst extrude001 = extrude(5, sketch001)" + ] + }, + { + "name": "bezierCurve", + "summary": "Draw a smooth, continuous, curved line segment from the current origin to", + "description": "the desired (x, y), using a number of control points to shape the curve's shape.", + "tags": [], + "args": [ + { + "name": "data", + "type": "BezierData", + "schema": { + "description": "Data to draw a bezier curve.", + "type": "object", + "required": [ + "control1", + "control2", + "to" + ], + "properties": { + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "control1": { + "description": "The first control point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "control2": { + "description": "The second control point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + "required": true + }, + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { + "y": { + "description": "The y coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ { - "description": "A path that is horizontal.", + "description": "A plane.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", + "__meta", + "id", + "origin", "type", - "x" + "value", + "xAxis", + "yAxis", + "zAxis" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", "type": "object", "required": [ - "id", - "sourceRange" + "x", + "y", + "z" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "x": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + "xAxis": { + "description": "What should the plane’s X axis be?", "type": "object", "required": [ - "end", - "start", - "value" + "x", + "y", + "z" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "x": { + "type": "number", + "format": "double" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "y": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "z": { + "type": "number", + "format": "double" } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + "yAxis": { + "description": "What should the plane’s Y axis be?", "type": "object", "required": [ - "end", - "start", - "value" + "x", + "y", + "z" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "x": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "y": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "z": { + "type": "number", + "format": "double" } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + "zAxis": { + "description": "The z-axis (normal).", "type": "object", "required": [ - "end", - "start", - "value" + "x", + "y", + "z" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "x": { + "type": "number", + "format": "double" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "y": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" + "z": { + "type": "number", + "format": "double" } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "fn decagon = (radius) => {\n let step = 1 / 10 * tau()\n let sketch001 = startSketchAt([cos(0) * radius, sin(0) * radius])\n return arrayReduce([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], sketch001, (i, sg) => {\n let x = cos(step * i) * radius\n let y = sin(step * i) * radius\n return lineTo([x, y], sg)\n})\n}\ndecagon(5.0)\n |> close(%)" - ] - }, - { - "name": "asin", - "summary": "Compute the arcsine of a number (in radians).", - "description": "", - "tags": [ - "math" - ], - "args": [ - { - "name": "num", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle: toDegrees(asin(0.5)),\n length: 20\n }, %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst extrude001 = extrude(5, sketch001)" - ] - }, - { - "name": "assert", - "summary": "Check a value at runtime, and raise an error if the argument provided", - "description": "is false.", - "tags": [], - "args": [ - { - "name": "data", - "type": "bool", - "schema": { - "type": "boolean" - }, - "required": true - }, - { - "name": "message", - "type": "string", - "schema": { - "type": "string" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "()", - "schema": { - "type": "null" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const myVar = true\nassert(myVar, \"should always be true\")" - ] - }, - { - "name": "assertEqual", - "summary": "Check that a numerical value equals another at runtime,", - "description": "otherwise raise an error.", - "tags": [], - "args": [ - { - "name": "left", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "right", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "epsilon", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "message", - "type": "string", - "schema": { - "type": "string" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "()", - "schema": { - "type": "null" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "let n = 1.0285\nlet o = 1.0286\nassertEqual(n, o, 0.01, \"n is within the given tolerance for o\")" - ] - }, - { - "name": "assertGreaterThan", - "summary": "Check that a numerical value is greater than another at runtime,", - "description": "otherwise raise an error.", - "tags": [], - "args": [ - { - "name": "left", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "right", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "message", - "type": "string", - "schema": { - "type": "string" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "()", - "schema": { - "type": "null" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "assertGreaterThan(2, 1, \"2 is greater than 1\")" - ] - }, - { - "name": "assertGreaterThanOrEq", - "summary": "Check that a numerical value is greater than or equal to another at runtime,", - "description": "otherwise raise an error.", - "tags": [], - "args": [ - { - "name": "left", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "right", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "message", - "type": "string", - "schema": { - "type": "string" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "()", - "schema": { - "type": "null" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "assertGreaterThanOrEq(2, 1, \"2 is greater than 1\")\nassertGreaterThanOrEq(1, 1, \"1 is equal to 1\")" - ] - }, - { - "name": "assertLessThan", - "summary": "Check that a numerical value is less than to another at runtime,", - "description": "otherwise raise an error.", - "tags": [], - "args": [ - { - "name": "left", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "right", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "message", - "type": "string", - "schema": { - "type": "string" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "()", - "schema": { - "type": "null" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "assertLessThan(1, 2, \"1 is less than 2\")" - ] - }, - { - "name": "assertLessThanOrEq", - "summary": "Check that a numerical value is less than or equal to another at runtime,", - "description": "otherwise raise an error.", - "tags": [], - "args": [ - { - "name": "left", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "right", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "message", - "type": "string", - "schema": { - "type": "string" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "()", - "schema": { - "type": "null" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "assertLessThanOrEq(1, 2, \"1 is less than 2\")\nassertLessThanOrEq(1, 1, \"1 is equal to 1\")" - ] - }, - { - "name": "atan", - "summary": "Compute the arctangent of a number (in radians).", - "description": "", - "tags": [ - "math" - ], - "args": [ - { - "name": "num", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle: toDegrees(atan(1.25)),\n length: 20\n }, %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst extrude001 = extrude(5, sketch001)" - ] - }, - { - "name": "bezierCurve", - "summary": "Draw a smooth, continuous, curved line segment from the current origin to", - "description": "the desired (x, y), using a number of control points to shape the curve's shape.", - "tags": [], - "args": [ - { - "name": "data", - "type": "BezierData", - "schema": { - "description": "Data to draw a bezier curve.", - "type": "object", - "required": [ - "control1", - "control2", - "to" - ], - "properties": { - "control1": { - "description": "The first control point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "control2": { - "description": "The second control point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "required": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + } }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { "__meta": { "type": "array", "items": { @@ -66780,63 +67660,40 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ - "plane" + "face" ] }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] + "description": "The tag of the face.", + "type": "string" }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the face’s X axis be?", "type": "object", "required": [ "x", @@ -66859,7 +67716,7 @@ } }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the face’s Y axis be?", "type": "object", "required": [ "x", @@ -66903,50 +67760,6 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" }, "solid": { "description": "The solid the face is on.", @@ -66959,61 +67772,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -67021,66 +67813,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -67088,656 +67888,219 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "sourceRange" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -67755,31 +68118,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -67791,6 +68134,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -67800,63 +68153,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -67882,10 +68205,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -67897,6 +68236,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -67907,6 +68250,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -67916,63 +68269,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -67998,10 +68321,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -68013,6 +68352,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -68023,6 +68366,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -68032,64 +68385,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -68115,10 +68437,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -68130,20 +68469,34 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -68154,62 +68507,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -68235,6 +68559,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -68246,6 +68594,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -68255,66 +68613,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -68340,6 +68665,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -68351,6 +68706,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -68360,73 +68725,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -68452,6 +68777,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -68463,6 +68806,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -68472,6 +68825,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -68482,91 +68848,678 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "value": { - "type": "string" + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -68574,81 +69527,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -68659,64 +69550,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -68724,81 +69594,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -68809,112 +69617,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -68931,32 +69688,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -68967,6 +69698,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -68976,42 +69717,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -69025,28 +69782,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -69061,6 +69798,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -69070,32 +69812,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -69106,6 +69822,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -69115,51 +69841,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -69173,27 +69910,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -69203,38 +69930,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -69248,27 +69985,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -69278,38 +70005,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -69323,27 +70060,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -69353,38 +70080,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -69398,27 +70135,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -69428,38 +70155,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -69469,881 +70206,901 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + } + } + }, + "required": true + }, + { + "name": "tag", + "type": "TagDeclarator", + "schema": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "value": { - "description": "The paths in the sketch.", + "type": "string" + }, + "digest": { "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "required": false + } + ], + "returnValue": { + "name": "", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "radius": { - "description": "the arc's radius", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true + "format": "double" }, - "y": { - "description": "The y coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] - } - } - } - }, - "required": true - }, - { - "name": "tag", - "type": "TagDeclarator", - "schema": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "required": false - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -70361,34 +71118,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -70412,32 +71172,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -70506,23 +71240,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -70545,12 +71263,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -70562,61 +71375,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -70624,6 +71416,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -70634,56 +71439,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -70691,6 +71566,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -70701,50 +71589,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -70756,608 +71700,89 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "ToPoint" + ] }, - "path": { - "description": "The path the tag is on.", + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -71383,6 +71808,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -71394,6 +71853,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -71403,63 +71872,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -71485,10 +71924,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -71500,6 +71955,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -71510,6 +71969,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -71519,63 +71988,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -71601,10 +72040,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -71616,6 +72072,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -71626,6 +72091,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -71635,64 +72110,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -71718,13 +72162,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -71733,8 +72197,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -71743,11 +72207,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -71757,62 +72216,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -71838,6 +72268,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -71849,6 +72309,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -71858,66 +72328,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -71943,6 +72380,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -71954,6 +72409,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -71963,73 +72428,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -72055,121 +72480,649 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -72177,81 +73130,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -72262,64 +73153,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -72327,81 +73197,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -72412,112 +73220,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -72534,32 +73291,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -72570,6 +73301,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -72579,42 +73320,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -72628,28 +73385,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -72664,6 +73401,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -72673,32 +73415,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -72709,6 +73425,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -72718,51 +73444,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -72776,27 +73513,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -72806,38 +73533,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -72851,27 +73588,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -72881,38 +73608,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -72926,27 +73663,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -72956,38 +73683,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -73001,27 +73738,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -73031,38 +73758,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -73072,912 +73809,160 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 2, + "minItems": 2 } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] } } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([0, 10], %)\n |> bezierCurve({\n to: [10, 10],\n control1: [5, 0],\n control2: [5, 10]\n }, %)\n |> lineTo([10, 0], %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" + ] + }, + { + "name": "ceil", + "summary": "Compute the smallest integer greater than or equal to a number.", + "description": "", + "tags": [ + "math" + ], + "args": [ + { + "name": "num", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> lineTo([12, 10], %)\n |> line([ceil(7.02986), 0], %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst extrude001 = extrude(5, sketch001)" + ] + }, + { + "name": "chamfer", + "summary": "Cut a straight transitional edge along a tagged path.", + "description": "Chamfer is similar in function and use to a fillet, except a fillet will blend the transition along an edge, rather than cut a sharp, straight transitional edge.", + "tags": [], + "args": [ + { + "name": "data", + "type": "ChamferData", + "schema": { + "description": "Data for chamfers.", + "type": "object", + "required": [ + "length", + "tags" + ], + "properties": { + "length": { + "description": "The length of the chamfer.", + "type": "number", + "format": "double" + }, + "tags": { + "description": "The tags of the paths you want to chamfer.", + "type": "array", + "items": { + "description": "A tag or a uuid of an edge.", + "anyOf": [ + { + "description": "A uuid of an edge.", + "type": "string", + "format": "uuid" + }, + { + "description": "A tag of an edge.", + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([0, 10], %)\n |> bezierCurve({\n to: [10, 10],\n control1: [5, 0],\n control2: [5, 10]\n }, %)\n |> lineTo([10, 0], %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" - ] - }, - { - "name": "ceil", - "summary": "Compute the smallest integer greater than or equal to a number.", - "description": "", - "tags": [ - "math" - ], - "args": [ - { - "name": "num", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> lineTo([12, 10], %)\n |> line([ceil(7.02986), 0], %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst extrude001 = extrude(5, sketch001)" - ] - }, - { - "name": "chamfer", - "summary": "Cut a straight transitional edge along a tagged path.", - "description": "Chamfer is similar in function and use to a fillet, except a fillet will blend the transition along an edge, rather than cut a sharp, straight transitional edge.", - "tags": [], - "args": [ - { - "name": "data", - "type": "ChamferData", - "schema": { - "description": "Data for chamfers.", - "type": "object", - "required": [ - "length", - "tags" - ], - "properties": { - "length": { - "description": "The length of the chamfer.", - "type": "number", - "format": "double" - }, - "tags": { - "description": "The tags of the paths you want to chamfer.", - "type": "array", - "items": { - "description": "A tag or a uuid of an edge.", - "anyOf": [ - { - "description": "A uuid of an edge.", - "type": "string", - "format": "uuid" - }, - { - "description": "A tag of an edge.", - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, "path": { "description": "The path the tag is on.", @@ -73988,32 +73973,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -74024,6 +73983,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -74033,51 +74002,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -74091,27 +74071,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -74121,38 +74091,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -74166,27 +74146,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -74196,38 +74166,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -74241,27 +74221,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -74271,38 +74241,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -74316,27 +74296,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -74346,38 +74316,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -74387,8 +74367,28 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } @@ -74413,61 +74413,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -74475,66 +74454,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -74542,81 +74529,188 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "sourceRange" + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -74630,38 +74724,116 @@ } } } - }, + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -74675,41 +74847,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -74730,6 +75572,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -74798,23 +75663,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -74837,12 +75686,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -74854,61 +75798,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -74916,66 +75839,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -74983,78 +75914,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -75063,27 +75969,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -75093,43 +75989,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -75138,27 +76044,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -75168,74 +76064,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -75243,74 +76177,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -75318,122 +76244,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -75450,32 +76338,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -75486,6 +76348,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -75495,42 +76367,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -75544,28 +76432,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -75580,6 +76448,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -75589,32 +76462,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -75625,6 +76472,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -75634,51 +76491,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -75692,27 +76560,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -75722,38 +76580,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -75767,27 +76635,17 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, "faceId": { "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -75797,38 +76655,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -75842,27 +76710,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -75872,38 +76730,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -75917,27 +76785,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -75947,38 +76805,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -75988,1224 +76856,485 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 2, + "minItems": 2 + } } } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "from": { - "description": "The from point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] } - } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] }, - { - "description": "A arc that is tangential to the last path segment", + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "from": { - "description": "The from point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + { + "name": "tag", + "type": "TagDeclarator", + "schema": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "required": false + } + ], + "returnValue": { + "name": "", + "type": "Solid", + "schema": { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } + "maxItems": 2, + "minItems": 2 } } - ] - } - } - } - }, - "required": true - }, - { - "name": "tag", - "type": "TagDeclarator", - "schema": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "required": false - } - ], - "returnValue": { - "name": "", - "type": "Solid", - "schema": { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ + }, { - "description": "A fillet.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -77213,66 +77342,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -77280,60 +77417,54 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -77345,61 +77476,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -77413,41 +77585,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -77468,6 +78310,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -77536,23 +78401,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -77575,12 +78424,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -77592,61 +78536,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -77654,6 +78577,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -77664,56 +78600,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -77721,6 +78727,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -77731,81 +78750,10 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, "id": { "description": "The id of the geometry.", "type": "string", @@ -77821,53 +78769,11 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -77876,27 +78782,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -77906,74 +78802,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -77981,74 +78915,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -78056,122 +78982,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -78188,32 +79076,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -78224,6 +79086,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -78233,42 +79105,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -78282,28 +79170,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -78318,6 +79186,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -78327,32 +79200,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -78363,6 +79210,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -78372,51 +79229,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -78430,27 +79298,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -78460,38 +79318,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -78505,27 +79373,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -78535,38 +79393,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -78580,27 +79448,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -78610,38 +79468,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -78655,27 +79523,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -78685,38 +79543,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -78726,840 +79594,112 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } - ] + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -79567,81 +79707,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -79652,64 +79730,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -79717,81 +79774,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -79802,51 +79797,56 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "// Chamfer a mounting plate.\nconst width = 20\nconst length = 10\nconst thickness = 1\nconst chamferLength = 2\n\nconst mountingPlateSketch = startSketchOn(\"XY\")\n |> startProfileAt([-width / 2, -length / 2], %)\n |> lineTo([width / 2, -length / 2], %, $edge1)\n |> lineTo([width / 2, length / 2], %, $edge2)\n |> lineTo([-width / 2, length / 2], %, $edge3)\n |> close(%, $edge4)\n\nconst mountingPlate = extrude(thickness, mountingPlateSketch)\n |> chamfer({\n length: chamferLength,\n tags: [\n getNextAdjacentEdge(edge1),\n getNextAdjacentEdge(edge2),\n getNextAdjacentEdge(edge3),\n getNextAdjacentEdge(edge4)\n ]\n }, %)", - "// Sketch on the face of a chamfer.\nfn cube = (pos, scale) => {\n const sg = startSketchOn('XY')\n |> startProfileAt(pos, %)\n |> line([0, scale], %)\n |> line([scale, 0], %)\n |> line([0, -scale], %)\n\n return sg\n}\n\nconst part001 = cube([0, 0], 20)\n |> close(%, $line1)\n |> extrude(20, %)\n |> chamfer({\n length: 10,\n tags: [getOppositeEdge(line1)]\n }, %, $chamfer1) // We tag the chamfer to reference it later.\n\nconst sketch001 = startSketchOn(part001, chamfer1)\n |> startProfileAt([10, 10], %)\n |> line([2, 0], %)\n |> line([0, 2], %)\n |> line([-2, 0], %)\n |> lineTo([profileStartX(%), profileStartY(%)], %)\n |> close(%)\n |> extrude(10, %)" - ] - }, - { - "name": "circle", - "summary": "Construct a 2-dimensional circle, of the specified radius, centered at", - "description": "the provided (x, y) origin point.", - "tags": [], - "args": [ + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "// Chamfer a mounting plate.\nconst width = 20\nconst length = 10\nconst thickness = 1\nconst chamferLength = 2\n\nconst mountingPlateSketch = startSketchOn(\"XY\")\n |> startProfileAt([-width / 2, -length / 2], %)\n |> lineTo([width / 2, -length / 2], %, $edge1)\n |> lineTo([width / 2, length / 2], %, $edge2)\n |> lineTo([-width / 2, length / 2], %, $edge3)\n |> close(%, $edge4)\n\nconst mountingPlate = extrude(thickness, mountingPlateSketch)\n |> chamfer({\n length: chamferLength,\n tags: [\n getNextAdjacentEdge(edge1),\n getNextAdjacentEdge(edge2),\n getNextAdjacentEdge(edge3),\n getNextAdjacentEdge(edge4)\n ]\n }, %)", + "// Sketch on the face of a chamfer.\nfn cube = (pos, scale) => {\n const sg = startSketchOn('XY')\n |> startProfileAt(pos, %)\n |> line([0, scale], %)\n |> line([scale, 0], %)\n |> line([0, -scale], %)\n\n return sg\n}\n\nconst part001 = cube([0, 0], 20)\n |> close(%, $line1)\n |> extrude(20, %)\n |> chamfer({\n length: 10,\n tags: [getOppositeEdge(line1)]\n }, %, $chamfer1) // We tag the chamfer to reference it later.\n\nconst sketch001 = startSketchOn(part001, chamfer1)\n |> startProfileAt([10, 10], %)\n |> line([2, 0], %)\n |> line([0, 2], %)\n |> line([-2, 0], %)\n |> lineTo([profileStartX(%), profileStartY(%)], %)\n |> close(%)\n |> extrude(10, %)" + ] + }, + { + "name": "circle", + "summary": "Construct a 2-dimensional circle, of the specified radius, centered at", + "description": "the provided (x, y) origin point.", + "tags": [], + "args": [ { "name": "data", "type": "CircleData", @@ -79900,34 +79900,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -79951,32 +79954,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -80045,23 +80022,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -80084,12 +80045,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -80101,61 +80157,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -80163,6 +80198,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -80173,56 +80221,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -80230,6 +80348,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -80240,50 +80371,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -80295,633 +80482,264 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } }, - "info": { - "description": "Engine information for a tag.", + { + "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "TangentialArcTo" + ] }, - "path": { - "description": "The path the tag is on.", + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "to": { - "description": "The to point.", + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -80933,6 +80751,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -80942,63 +80770,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -81024,10 +80822,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -81039,6 +80854,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -81049,6 +80873,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -81058,63 +80892,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -81140,13 +80944,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -81155,8 +80979,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -81174,64 +80998,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -81257,13 +81050,39 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true }, - "center": { - "description": "the arc's center", + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -81272,8 +81091,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -81282,11 +81101,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -81296,62 +81110,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -81377,78 +81162,11 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" } } }, { - "description": "An angled line to.", + "description": "A base path.", "type": "object", "required": [ "__geoMeta", @@ -81457,31 +81175,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -81493,6 +81191,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -81502,73 +81210,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -81594,258 +81262,579 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "An extruded arc.", + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "__meta", + "value" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "tag": { - "description": "The tag.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true }, - "value": { - "type": "string" + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, - { - "description": "Geometry metadata.", + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -81856,9 +81845,66 @@ }, "maxItems": 2, "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -81866,74 +81912,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -81941,122 +81979,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -82075,61 +82075,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -82143,41 +82184,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" - } + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -82198,6 +82909,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -82266,23 +83000,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -82305,12 +83023,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -82322,61 +83135,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -82384,66 +83176,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -82451,78 +83251,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -82531,27 +83306,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -82561,6 +83326,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -82571,33 +83349,30 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -82606,27 +83381,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -82636,74 +83401,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -82711,74 +83514,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -82786,122 +83581,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -82918,32 +83675,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -82954,6 +83685,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -82963,42 +83704,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -83012,28 +83769,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -83048,6 +83785,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -83057,32 +83799,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -83093,6 +83809,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -83102,51 +83828,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -83160,27 +83897,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -83190,38 +83917,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -83235,27 +83972,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -83265,38 +83992,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -83310,27 +84047,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -83340,38 +84067,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -83385,27 +84122,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -83415,38 +84142,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -83456,791 +84193,54 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } @@ -84260,29 +84260,29 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true @@ -84304,61 +84304,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -84372,161 +84413,838 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "sourceRange" + "end", + "start", + "value" ], "properties": { - "sourceRange": { - "description": "The source range.", + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { "type": "integer", - "format": "uint", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", "minimum": 0.0 }, "maxItems": 2, @@ -84534,12 +85252,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -84551,61 +85364,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -84613,66 +85405,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -84680,656 +85480,219 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { "type": { "type": "string", "enum": [ "chamfer" ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -85347,31 +85710,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -85383,6 +85726,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -85392,63 +85745,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -85474,10 +85797,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -85489,6 +85828,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -85499,6 +85842,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -85508,63 +85861,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -85590,10 +85913,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -85605,6 +85944,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -85615,6 +85958,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -85624,64 +85977,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -85707,10 +86029,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -85722,6 +86061,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -85732,10 +86080,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -85746,62 +86099,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -85827,6 +86151,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -85838,6 +86186,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -85847,66 +86205,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -85932,6 +86257,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -85943,6 +86298,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -85952,73 +86317,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -86044,6 +86369,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -86055,6 +86398,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -86064,6 +86417,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -86074,91 +86440,678 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "value": { - "type": "string" + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -86166,149 +87119,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] } } }, { - "description": "An extruded arc.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, "type": { "type": "string", "enum": [ - "extrudeArc" + "chamfer" ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -86316,81 +87186,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -86401,112 +87209,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -86523,32 +87280,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -86559,6 +87290,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -86568,42 +87309,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -86617,28 +87374,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -86653,6 +87390,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -86662,32 +87404,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -86698,6 +87414,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -86707,51 +87433,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -86765,27 +87502,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -86795,38 +87522,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -86840,27 +87577,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -86870,38 +87597,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -86915,27 +87652,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -86945,38 +87672,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -86990,27 +87727,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -87020,38 +87747,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -87061,879 +87798,537 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn(\"-XZ\")\n |> circle({ center: [0, 0], radius: 10 }, %)\n\nconst example = extrude(5, exampleSketch)", + "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([-15, 0], %)\n |> line([30, 0], %)\n |> line([0, 30], %)\n |> line([-30, 0], %)\n |> close(%)\n |> hole(circle({ center: [0, 15], radius: 5 }, %), %)\n\nconst example = extrude(5, exampleSketch)" + ] + }, + { + "name": "close", + "summary": "Construct a line segment from the current origin back to the profile's", + "description": "origin, ensuring the resulting 2-dimensional sketch is not open-ended.", + "tags": [], + "args": [ + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } + "nullable": true }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn(\"-XZ\")\n |> circle({ center: [0, 0], radius: 10 }, %)\n\nconst example = extrude(5, exampleSketch)", - "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([-15, 0], %)\n |> line([30, 0], %)\n |> line([0, 30], %)\n |> line([-30, 0], %)\n |> close(%)\n |> hole(circle({ center: [0, 15], radius: 5 }, %), %)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "close", - "summary": "Construct a line segment from the current origin back to the profile's", - "description": "origin, ensuring the resulting 2-dimensional sketch is not open-ended.", - "tags": [], - "args": [ - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -87947,41 +88342,357 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -88002,6 +88713,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -88070,23 +88804,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -88109,12 +88827,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -88126,61 +88939,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -88188,6 +88980,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -88198,56 +89003,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -88255,6 +89130,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -88265,50 +89153,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -88320,633 +89264,148 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", + { + "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", + "ccw", + "center", "from", "to", "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -88958,6 +89417,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -88967,63 +89436,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -89049,10 +89488,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -89064,6 +89519,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -89074,6 +89533,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -89083,63 +89552,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -89165,10 +89604,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -89180,6 +89636,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -89190,6 +89655,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -89199,64 +89674,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -89282,13 +89726,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -89297,8 +89761,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -89307,11 +89771,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -89321,62 +89780,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -89402,6 +89832,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -89413,6 +89873,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -89422,66 +89892,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -89507,6 +89944,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -89518,6 +89973,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -89527,73 +89992,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -89619,121 +90044,649 @@ "minItems": 2 } } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -89741,81 +90694,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -89826,64 +90717,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -89891,81 +90761,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -89976,112 +90784,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -90098,32 +90855,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -90134,51 +90865,77 @@ "maxItems": 2, "minItems": 2 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", "start", "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -90192,28 +90949,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -90228,6 +90965,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -90237,32 +90979,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -90273,6 +90989,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -90282,51 +91008,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -90340,27 +91077,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -90370,38 +91097,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -90415,27 +91152,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -90445,38 +91172,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -90490,27 +91227,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -90520,38 +91247,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -90565,27 +91302,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -90595,38 +91322,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -90636,907 +91373,565 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + } + } + }, + "required": true + }, + { + "name": "tag", + "type": "TagDeclarator", + "schema": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "value": { - "description": "The paths in the sketch.", + "type": "string" + }, + "digest": { "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "required": false + } + ], + "returnValue": { + "name": "", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "radius": { - "description": "the arc's radius", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "value": { + "type": "string" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true + "format": "double" }, - "y": { - "description": "The y coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - { - "name": "tag", - "type": "TagDeclarator", - "schema": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "required": false - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -91550,155 +91945,99 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -91712,78 +92051,531 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -91791,6 +92583,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -91801,56 +92606,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -91858,6 +92733,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -91868,50 +92756,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -91923,633 +92867,148 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } }, - "info": { - "description": "Engine information for a tag.", + { + "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "TangentialArcTo" + ] }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -92561,6 +93020,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -92570,63 +93039,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -92652,10 +93091,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -92667,6 +93122,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -92677,6 +93136,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -92686,63 +93155,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -92768,10 +93207,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -92783,6 +93239,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -92793,6 +93258,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -92802,64 +93277,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -92885,13 +93329,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -92900,8 +93364,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -92910,11 +93374,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -92924,62 +93383,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -93005,6 +93435,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -93016,6 +93476,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -93025,66 +93495,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -93110,6 +93547,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -93121,6 +93576,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -93130,73 +93595,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -93222,121 +93647,649 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -93344,81 +94297,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -93429,64 +94320,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -93494,81 +94364,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -93579,112 +94387,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -93701,32 +94458,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -93737,6 +94468,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -93746,42 +94487,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -93795,28 +94552,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -93831,6 +94568,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -93840,32 +94582,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -93876,6 +94592,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -93885,51 +94611,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -93943,27 +94680,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -93973,38 +94700,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -94018,27 +94755,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -94048,38 +94775,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -94093,27 +94830,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -94123,38 +94850,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -94168,27 +94905,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -94198,38 +94925,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -94239,971 +94976,397 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 10], %)\n |> line([10, 0], %)\n |> close(%)\n |> extrude(10, %)", + "const exampleSketch = startSketchOn('-XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> line([0, 10], %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" + ] + }, + { + "name": "cm", + "summary": "Centimeters conversion factor for current projects units.", + "description": "No matter what units the current project uses, this function will always return the conversion factor to centimeters.\nFor example, if the current project uses inches, this function will return `0.393701`. If the current project uses millimeters, this function will return `10`. If the current project uses centimeters, this function will return `1`.\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function.\nWe merely provide these functions for convenience and readability, as `10 * cm()` is more readable that your intent is \"I want 10 centimeters\" than `10 * 10`, if the project settings are in millimeters.", + "tags": [ + "units" + ], + "args": [], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const totalWidth = 10 * cm()" + ] + }, + { + "name": "cos", + "summary": "Compute the cosine of a number (in radians).", + "description": "", + "tags": [ + "math" + ], + "args": [ + { + "name": "num", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle: 30,\n length: 3 / cos(toRadians(30))\n }, %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" + ] + }, + { + "name": "e", + "summary": "Return the value of Euler’s number `e`.", + "description": "", + "tags": [ + "math" + ], + "args": [], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle: 30, length: 2 * e() ^ 2 }, %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" + ] + }, + { + "name": "extrude", + "summary": "Extend a 2-dimensional sketch through a third dimension in order to", + "description": "create new 3-dimensional volume, or if extruded into an existing volume, cut into an existing solid.", + "tags": [], + "args": [ + { + "name": "length", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "sketch_set", + "type": "SketchSet", + "schema": { + "description": "A sketch or a group of sketches.", + "oneOf": [ + { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "sketch" + ] + }, + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 10], %)\n |> line([10, 0], %)\n |> close(%)\n |> extrude(10, %)", - "const exampleSketch = startSketchOn('-XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> line([0, 10], %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" - ] - }, - { - "name": "cm", - "summary": "Centimeters conversion factor for current projects units.", - "description": "No matter what units the current project uses, this function will always return the conversion factor to centimeters.\nFor example, if the current project uses inches, this function will return `0.393701`. If the current project uses millimeters, this function will return `10`. If the current project uses centimeters, this function will return `1`.\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function.\nWe merely provide these functions for convenience and readability, as `10 * cm()` is more readable that your intent is \"I want 10 centimeters\" than `10 * 10`, if the project settings are in millimeters.", - "tags": [ - "units" - ], - "args": [], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const totalWidth = 10 * cm()" - ] - }, - { - "name": "cos", - "summary": "Compute the cosine of a number (in radians).", - "description": "", - "tags": [ - "math" - ], - "args": [ - { - "name": "num", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle: 30,\n length: 3 / cos(toRadians(30))\n }, %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "e", - "summary": "Return the value of Euler’s number `e`.", - "description": "", - "tags": [ - "math" - ], - "args": [], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle: 30, length: 2 * e() ^ 2 }, %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" - ] - }, - { - "name": "extrude", - "summary": "Extend a 2-dimensional sketch through a third dimension in order to", - "description": "create new 3-dimensional volume, or if extruded into an existing volume, cut into an existing solid.", - "tags": [], - "args": [ - { - "name": "length", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "sketch_set", - "type": "SketchSet", - "schema": { - "description": "A sketch or a group of sketches.", - "oneOf": [ - { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "type", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -95217,155 +95380,109 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -95379,78 +95496,759 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -95458,6 +96256,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -95468,56 +96279,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -95525,6 +96406,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -95535,50 +96429,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -95590,592 +96540,11 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, "value": { "description": "The paths in the sketch.", "type": "array", @@ -96192,31 +96561,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -96228,6 +96577,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -96237,63 +96596,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -96319,10 +96648,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -96334,6 +96679,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -96344,6 +96693,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -96353,63 +96712,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -96435,10 +96764,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -96450,6 +96795,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -96460,6 +96809,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -96469,64 +96828,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -96552,10 +96880,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -96567,6 +96912,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -96577,10 +96931,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -96591,62 +96950,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -96672,6 +97002,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -96683,6 +97037,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -96692,66 +97056,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -96777,16 +97108,56 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -96797,73 +97168,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -96889,6 +97220,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -96900,6 +97249,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -96909,163 +97268,631 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "tag": { - "description": "The tag.", + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true }, - "value": { - "type": "string" + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, - { - "description": "An extruded arc.", + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -97076,84 +97903,66 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } - }, + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -97161,74 +97970,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -97236,122 +98037,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -97368,32 +98131,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -97404,6 +98141,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -97413,42 +98160,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -97462,28 +98225,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -97498,6 +98241,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -97507,32 +98255,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -97543,6 +98265,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -97552,51 +98284,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -97610,27 +98353,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -97640,38 +98373,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -97685,27 +98428,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -97715,38 +98448,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -97760,27 +98503,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -97790,38 +98523,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -97835,27 +98578,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -97865,38 +98598,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -97906,864 +98649,1001 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "type": { - "type": "string", - "enum": [ - "sketch" - ] - }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "type": [ + "object", + "array" + ], + "items": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { + "y": { + "description": "The y coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ { - "description": "A path that is horizontal.", + "description": "A plane.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", + "__meta", + "id", + "origin", "type", - "x" + "value", + "xAxis", + "yAxis", + "zAxis" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", "type": "object", "required": [ - "id", - "sourceRange" + "x", + "y", + "z" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "x": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + "xAxis": { + "description": "What should the plane’s X axis be?", "type": "object", "required": [ - "end", - "start", - "value" + "x", + "y", + "z" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "x": { + "type": "number", + "format": "double" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "y": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" + "z": { + "type": "number", + "format": "double" } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] + } }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + "yAxis": { + "description": "What should the plane’s Y axis be?", "type": "object", "required": [ - "id", - "sourceRange" + "x", + "y", + "z" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "x": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + "zAxis": { + "description": "The z-axis (normal).", "type": "object", "required": [ - "end", - "start", - "value" + "x", + "y", + "z" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "x": { + "type": "number", + "format": "double" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "y": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" + "z": { + "type": "number", + "format": "double" } - }, - "nullable": true + } }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - { - "type": [ - "object", - "array" - ], - "items": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { + "__meta": { "type": "array", "items": { "description": "Metadata.", @@ -98785,63 +99665,40 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ - "plane" + "face" ] }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] + "description": "The tag of the face.", + "type": "string" }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the face’s X axis be?", "type": "object", "required": [ "x", @@ -98864,7 +99721,7 @@ } }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the face’s Y axis be?", "type": "object", "required": [ "x", @@ -98908,50 +99765,6 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" }, "solid": { "description": "The solid the face is on.", @@ -98964,61 +99777,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -99026,66 +99818,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -99093,78 +99893,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -99173,27 +99948,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -99203,43 +99968,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -99248,27 +100023,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -99278,74 +100043,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -99353,74 +100156,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -99428,122 +100223,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -99560,32 +100317,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -99596,6 +100327,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -99605,77 +100346,73 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -99690,6 +100427,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -99699,32 +100441,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -99735,6 +100451,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -99744,51 +100470,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -99802,27 +100539,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -99832,38 +100559,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -99877,27 +100614,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -99907,38 +100634,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -99952,27 +100689,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -99982,38 +100709,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -100027,27 +100764,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -100057,38 +100784,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -100098,11 +100835,428 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "sketches" + ] + } + } + } + ] + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "SolidSet", + "schema": { + "description": "A solid or a group of solids.", + "oneOf": [ + { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "solid" + ] + }, + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -100120,31 +101274,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -100156,6 +101290,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -100165,63 +101309,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -100247,10 +101361,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -100262,6 +101392,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -100272,6 +101406,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -100281,63 +101425,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -100363,10 +101477,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -100378,6 +101508,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -100388,6 +101522,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -100397,64 +101541,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -100480,10 +101593,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -100495,6 +101625,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -100505,10 +101644,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -100519,62 +101663,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -100600,6 +101715,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -100611,6 +101750,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -100620,66 +101769,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -100705,6 +101821,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -100716,6 +101862,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -100725,73 +101881,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -100817,6 +101933,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -100828,6 +101962,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -100837,313 +101981,63 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sketches" - ] - } - } - } - ] - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "SolidSet", - "schema": { - "description": "A solid or a group of solids.", - "oneOf": [ - { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "type", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" }, "on": { "description": "What the sketch is on (can be a plane or a face).", @@ -101162,34 +102056,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -101213,32 +102110,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -101307,23 +102178,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -101346,12 +102201,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -101363,61 +102313,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -101425,66 +102354,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -101492,78 +102429,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -101572,27 +102484,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -101602,43 +102504,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -101647,27 +102559,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -101677,74 +102579,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -101752,74 +102692,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -101827,122 +102759,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -101959,32 +102853,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -101995,6 +102863,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -102004,42 +102882,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -102053,28 +102947,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -102089,6 +102963,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -102098,32 +102977,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -102134,6 +102987,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -102143,51 +103006,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -102201,27 +103075,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -102231,38 +103095,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -102276,27 +103150,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -102306,38 +103170,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -102351,27 +103225,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -102381,38 +103245,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -102426,27 +103300,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -102456,38 +103320,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -102497,846 +103371,112 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 2, + "minItems": 2 } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "type": { + "endCapId": { + "description": "The id of the extrusion end cap", "type": "string", - "enum": [ - "solid" - ] + "format": "uuid", + "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -103344,74 +103484,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] } } }, { - "description": "An extruded arc.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -103419,193 +103551,61 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, @@ -103625,61 +103625,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -103687,6 +103666,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -103697,56 +103689,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -103754,6 +103816,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -103764,50 +103839,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -103819,61 +103950,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -103887,155 +104059,225 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -104049,76 +104291,572 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "$ref": "#/components/schemas/Solid" - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ "x", "y", "z" @@ -104137,46 +104875,170 @@ "format": "double" } } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - } - ] - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + }, + { + "description": "A face.", "type": "object", "required": [ + "__meta", "id", - "sourceRange" + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" ], "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, "id": { - "description": "The id of the geometry.", + "description": "The id of the face.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "$ref": "#/components/schemas/Solid" + }, + "__meta": { "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, + } + ] + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { "from": { "description": "The from point.", "type": "array", @@ -104187,6 +105049,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -104196,42 +105068,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -104245,28 +105133,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -104281,6 +105149,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -104290,32 +105163,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -104326,6 +105173,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -104335,51 +105192,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -104393,27 +105261,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -104423,38 +105281,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -104468,27 +105336,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -104498,38 +105356,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -104543,27 +105411,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -104573,38 +105431,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -104618,27 +105486,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -104648,38 +105506,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -104689,162 +105557,340 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "to": { - "description": "The to point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 32, + "minItems": 32, + "nullable": true } - } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "solids" + ] + } + } + } + ] + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const example = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> arc({\n angleStart: 120,\n angleEnd: 0,\n radius: 5\n }, %)\n |> line([5, 0], %)\n |> line([0, 10], %)\n |> bezierCurve({\n control1: [-10, 0],\n control2: [2, 10],\n to: [-5, 10]\n }, %)\n |> line([-5, -2], %)\n |> close(%)\n |> extrude(10, %)", + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([-10, 0], %)\n |> arc({\n angleStart: 120,\n angleEnd: -60,\n radius: 5\n }, %)\n |> line([10, 0], %)\n |> line([5, 0], %)\n |> bezierCurve({\n control1: [-3, 0],\n control2: [2, 10],\n to: [-5, 10]\n }, %)\n |> line([-4, 10], %)\n |> line([-5, -2], %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" + ] + }, + { + "name": "fillet", + "summary": "Blend a transitional edge along a tagged path, smoothing the sharp edge.", + "description": "Fillet is similar in function and use to a chamfer, except a chamfer will cut a sharp transition along an edge while fillet will smoothly blend the transition.", + "tags": [], + "args": [ + { + "name": "data", + "type": "FilletData", + "schema": { + "description": "Data for fillets.", + "type": "object", + "required": [ + "radius", + "tags" + ], + "properties": { + "radius": { + "description": "The radius of the fillet.", + "type": "number", + "format": "double" + }, + "tags": { + "description": "The tags of the paths you want to fillet.", + "type": "array", + "items": { + "description": "A tag or a uuid of an edge.", + "anyOf": [ + { + "description": "A uuid of an edge.", + "type": "string", + "format": "uuid" + }, + { + "description": "A tag of an edge.", + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ "__geoMeta", - "ccw", - "center", "from", - "to", - "type" + "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -104853,8 +105899,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -104872,63 +105918,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -104954,106 +105970,70 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] } - } + }, + "nullable": true }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", "type": "object", "required": [ + "faceId", "id", - "sourceRange" + "sourceRange", + "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "id": { "description": "The id of the geometry.", "type": "string", @@ -105072,108 +106052,63 @@ } } }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", + { + "description": "An extruded arc.", "type": "object", "required": [ - "end", - "start", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { "id": { "description": "The id of the geometry.", "type": "string", @@ -105192,93 +106127,63 @@ } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + { + "description": "Geometry metadata.", "type": "object", "required": [ - "end", - "start", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "type": { + "type": "string", + "enum": [ + "chamfer" + ] }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { "id": { "description": "The id of the geometry.", "type": "string", @@ -105297,100 +106202,63 @@ } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + { + "description": "Geometry metadata.", "type": "object", "required": [ - "end", - "start", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { "id": { "description": "The id of the geometry.", "type": "string", @@ -105408,121 +106276,440 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } + } + } + } + } + ] + } + }, + "tolerance": { + "description": "The tolerance for the fillet.", + "default": null, + "type": "number", + "format": "double", + "nullable": true + } + } + }, + "required": true + }, + { + "name": "solid", + "type": "Solid", + "schema": { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } - }, - "startCapId": { - "description": "The id of the extrusion start cap", + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", - "format": "uuid", - "nullable": true + "format": "uuid" }, "value": { - "description": "The extrude surfaces.", + "description": "The paths in the sketch.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A path.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A path that goes to a point.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", + "__geoMeta", + "from", + "to", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "ToPoint" + ] }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "sourceRange": { - "description": "The source range.", + "to": { + "description": "The to point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 }, "tag": { - "description": "The tag.", + "description": "The tag of the path.", "type": "object", "required": [ "end", @@ -105530,74 +106717,115 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, { - "description": "An extruded arc.", + "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", + "__geoMeta", + "ccw", + "center", + "from", + "to", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "TangentialArcTo" + ] }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "sourceRange": { - "description": "The source range.", + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 }, "tag": { - "description": "The tag.", + "description": "The tag of the path.", "type": "object", "required": [ "end", @@ -105605,74 +106833,115 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, { - "description": "Geometry metadata.", + "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", + "__geoMeta", + "ccw", + "center", + "from", + "to", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "TangentialArc" + ] }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "sourceRange": { - "description": "The source range.", + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 }, "tag": { - "description": "The tag.", + "description": "The tag of the path.", "type": "object", "required": [ "end", @@ -105680,74 +106949,121 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, { - "description": "Geometry metadata.", + "description": "a complete arc", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "Circle" + ] }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "sourceRange": { - "description": "The source range.", + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 }, "tag": { - "description": "The tag.", + "description": "The tag of the path.", "type": "object", "required": [ "end", @@ -105755,810 +107071,382 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "solids" - ] - } - } - } - ] - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const example = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> arc({\n angleStart: 120,\n angleEnd: 0,\n radius: 5\n }, %)\n |> line([5, 0], %)\n |> line([0, 10], %)\n |> bezierCurve({\n control1: [-10, 0],\n control2: [2, 10],\n to: [-5, 10]\n }, %)\n |> line([-5, -2], %)\n |> close(%)\n |> extrude(10, %)", - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([-10, 0], %)\n |> arc({\n angleStart: 120,\n angleEnd: -60,\n radius: 5\n }, %)\n |> line([10, 0], %)\n |> line([5, 0], %)\n |> bezierCurve({\n control1: [-3, 0],\n control2: [2, 10],\n to: [-5, 10]\n }, %)\n |> line([-4, 10], %)\n |> line([-5, -2], %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" - ] - }, - { - "name": "fillet", - "summary": "Blend a transitional edge along a tagged path, smoothing the sharp edge.", - "description": "Fillet is similar in function and use to a chamfer, except a chamfer will cut a sharp transition along an edge while fillet will smoothly blend the transition.", - "tags": [], - "args": [ - { - "name": "data", - "type": "FilletData", - "schema": { - "description": "Data for fillets.", - "type": "object", - "required": [ - "radius", - "tags" - ], - "properties": { - "radius": { - "description": "The radius of the fillet.", - "type": "number", - "format": "double" - }, - "tags": { - "description": "The tags of the paths you want to fillet.", - "type": "array", - "items": { - "description": "A tag or a uuid of an edge.", - "anyOf": [ - { - "description": "A uuid of an edge.", - "type": "string", - "format": "uuid" - }, - { - "description": "A tag of an edge.", - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, - "info": { - "description": "Engine information for a tag.", + { + "description": "A path that is horizontal.", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "from", + "to", + "type", + "x" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "Horizontal" + ] }, - "path": { - "description": "The path the tag is on.", + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } - ], - "nullable": true + } } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - ] - } - }, - "tolerance": { - "description": "The tolerance for the fillet.", - "default": null, - "type": "number", - "format": "double", - "nullable": true - } - } - }, - "required": true - }, - { - "name": "solid", - "type": "Solid", - "schema": { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" + } }, - "tag": { + { + "description": "An angled line to.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "digest": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" + } }, - "tag": { + { + "description": "A base path.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "digest": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + } } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -106576,63 +107464,17 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -106653,6 +107495,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -106721,23 +107586,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -106760,12 +107609,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -106777,61 +107721,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -106839,66 +107762,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -106906,78 +107837,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -106986,27 +107892,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -107016,43 +107912,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -107061,27 +107967,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -107091,74 +107987,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -107166,74 +108100,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -107241,122 +108167,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -107373,32 +108261,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -107409,6 +108271,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -107418,42 +108290,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -107467,28 +108355,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -107503,6 +108371,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -107512,32 +108385,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -107548,6 +108395,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -107557,51 +108414,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -107615,27 +108483,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -107645,38 +108503,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -107690,27 +108558,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -107720,38 +108578,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -107765,27 +108633,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -107795,38 +108653,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -107840,27 +108708,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -107870,38 +108728,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -107911,1224 +108779,560 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 32, + "minItems": 32, + "nullable": true } - } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "from": { - "description": "The from point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + { + "name": "tag", + "type": "TagDeclarator", + "schema": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "required": false + } + ], + "returnValue": { + "name": "", + "type": "Solid", + "schema": { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } + "maxItems": 2, + "minItems": 2 } } - ] - } - } - } - }, - "required": true - }, - { - "name": "tag", - "type": "TagDeclarator", - "schema": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "required": false - } - ], - "returnValue": { - "name": "", - "type": "Solid", - "schema": { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ + }, { - "description": "A fillet.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -109136,73 +109340,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -109213,50 +109363,31 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -109268,61 +109399,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -109336,41 +109508,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -109391,6 +110233,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -109459,23 +110324,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -109498,12 +110347,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -109515,61 +110459,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -109577,66 +110500,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] - } + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -109644,78 +110575,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -109724,27 +110630,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -109754,43 +110650,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -109799,27 +110705,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -109829,74 +110725,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -109904,74 +110838,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -109979,122 +110905,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -110111,32 +110999,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -110147,6 +111009,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -110156,42 +111028,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -110205,28 +111093,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -110241,6 +111109,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -110250,32 +111123,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -110286,6 +111133,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -110295,51 +111152,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -110353,27 +111221,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -110383,38 +111241,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -110428,27 +111296,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -110458,38 +111316,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -110503,27 +111371,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -110533,38 +111391,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -110578,27 +111446,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -110608,38 +111466,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -110649,182 +111517,466 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "to": { - "description": "The to point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 32, + "minItems": 32, + "nullable": true } - } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const width = 20\nconst length = 10\nconst thickness = 1\nconst filletRadius = 2\n\nconst mountingPlateSketch = startSketchOn(\"XY\")\n |> startProfileAt([-width / 2, -length / 2], %)\n |> lineTo([width / 2, -length / 2], %, $edge1)\n |> lineTo([width / 2, length / 2], %, $edge2)\n |> lineTo([-width / 2, length / 2], %, $edge3)\n |> close(%, $edge4)\n\nconst mountingPlate = extrude(thickness, mountingPlateSketch)\n |> fillet({\n radius: filletRadius,\n tags: [\n getNextAdjacentEdge(edge1),\n getNextAdjacentEdge(edge2),\n getNextAdjacentEdge(edge3),\n getNextAdjacentEdge(edge4)\n ]\n }, %)", + "const width = 20\nconst length = 10\nconst thickness = 1\nconst filletRadius = 1\n\nconst mountingPlateSketch = startSketchOn(\"XY\")\n |> startProfileAt([-width / 2, -length / 2], %)\n |> lineTo([width / 2, -length / 2], %, $edge1)\n |> lineTo([width / 2, length / 2], %, $edge2)\n |> lineTo([-width / 2, length / 2], %, $edge3)\n |> close(%, $edge4)\n\nconst mountingPlate = extrude(thickness, mountingPlateSketch)\n |> fillet({\n radius: filletRadius,\n tolerance: 0.000001,\n tags: [\n getNextAdjacentEdge(edge1),\n getNextAdjacentEdge(edge2),\n getNextAdjacentEdge(edge3),\n getNextAdjacentEdge(edge4)\n ]\n }, %)" + ] + }, + { + "name": "floor", + "summary": "Compute the largest integer less than or equal to a number.", + "description": "", + "tags": [ + "math" + ], + "args": [ + { + "name": "num", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> lineTo([12, 10], %)\n |> line([floor(7.02986), 0], %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst extrude001 = extrude(5, sketch001)" + ] + }, + { + "name": "ft", + "summary": "Feet conversion factor for current projects units.", + "description": "No matter what units the current project uses, this function will always return the conversion factor to feet.\nFor example, if the current project uses inches, this function will return `12`. If the current project uses millimeters, this function will return `304.8`. If the current project uses feet, this function will return `1`.\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function.\nWe merely provide these functions for convenience and readability, as `10 * ft()` is more readable that your intent is \"I want 10 feet\" than `10 * 304.8`, if the project settings are in millimeters.", + "tags": [ + "units" + ], + "args": [], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const totalWidth = 10 * ft()" + ] + }, + { + "name": "getNextAdjacentEdge", + "summary": "Get the next adjacent edge to the edge given.", + "description": "", + "tags": [], + "args": [ + { + "name": "tag", + "type": "TagIdentifier", + "schema": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "center": { - "description": "the arc's center", + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "from": { - "description": "The from point.", + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", + "description": "The tag.", "type": "object", "required": [ "end", @@ -110832,115 +111984,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] } } }, { - "description": "A arc that is tangential to the last path segment", + "description": "An extruded arc.", "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", + "faceId", + "id", + "sourceRange", "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", + "description": "The tag.", "type": "object", "required": [ "end", @@ -110948,121 +112059,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] } } }, { - "description": "a complete arc", + "description": "Geometry metadata.", "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", + "faceId", + "id", + "sourceRange", "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "type": { + "type": "string", + "enum": [ + "chamfer" + ] }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", + "description": "The tag.", "type": "object", "required": [ "end", @@ -111070,107 +112134,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { "digest": { "type": "array", "items": { @@ -111181,94 +112157,51 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true }, - "to": { - "description": "The to point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" } } }, { - "description": "An angled line to.", + "description": "Geometry metadata.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", + "faceId", + "id", + "sourceRange", "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", + "description": "The tag.", "type": "object", "required": [ "end", @@ -111276,553 +112209,103 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } - ] - } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } + "maxItems": 2, + "minItems": 2 } } - ] + } } } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const width = 20\nconst length = 10\nconst thickness = 1\nconst filletRadius = 2\n\nconst mountingPlateSketch = startSketchOn(\"XY\")\n |> startProfileAt([-width / 2, -length / 2], %)\n |> lineTo([width / 2, -length / 2], %, $edge1)\n |> lineTo([width / 2, length / 2], %, $edge2)\n |> lineTo([-width / 2, length / 2], %, $edge3)\n |> close(%, $edge4)\n\nconst mountingPlate = extrude(thickness, mountingPlateSketch)\n |> fillet({\n radius: filletRadius,\n tags: [\n getNextAdjacentEdge(edge1),\n getNextAdjacentEdge(edge2),\n getNextAdjacentEdge(edge3),\n getNextAdjacentEdge(edge4)\n ]\n }, %)", - "const width = 20\nconst length = 10\nconst thickness = 1\nconst filletRadius = 1\n\nconst mountingPlateSketch = startSketchOn(\"XY\")\n |> startProfileAt([-width / 2, -length / 2], %)\n |> lineTo([width / 2, -length / 2], %, $edge1)\n |> lineTo([width / 2, length / 2], %, $edge2)\n |> lineTo([-width / 2, length / 2], %, $edge3)\n |> close(%, $edge4)\n\nconst mountingPlate = extrude(thickness, mountingPlateSketch)\n |> fillet({\n radius: filletRadius,\n tolerance: 0.000001,\n tags: [\n getNextAdjacentEdge(edge1),\n getNextAdjacentEdge(edge2),\n getNextAdjacentEdge(edge3),\n getNextAdjacentEdge(edge4)\n ]\n }, %)" - ] - }, - { - "name": "floor", - "summary": "Compute the largest integer less than or equal to a number.", - "description": "", - "tags": [ - "math" - ], - "args": [ - { - "name": "num", - "type": "number", - "schema": { - "type": "number", - "format": "double" }, "required": true } ], "returnValue": { "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> lineTo([12, 10], %)\n |> line([floor(7.02986), 0], %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst extrude001 = extrude(5, sketch001)" - ] - }, - { - "name": "ft", - "summary": "Feet conversion factor for current projects units.", - "description": "No matter what units the current project uses, this function will always return the conversion factor to feet.\nFor example, if the current project uses inches, this function will return `12`. If the current project uses millimeters, this function will return `304.8`. If the current project uses feet, this function will return `1`.\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function.\nWe merely provide these functions for convenience and readability, as `10 * ft()` is more readable that your intent is \"I want 10 feet\" than `10 * 304.8`, if the project settings are in millimeters.", - "tags": [ - "units" - ], - "args": [], - "returnValue": { - "name": "", - "type": "number", + "type": "Uuid", "schema": { - "type": "number", - "format": "double" + "type": "string", + "format": "uuid" }, "required": true }, "unpublished": false, "deprecated": false, "examples": [ - "const totalWidth = 10 * ft()" + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> angledLine({ angle: 60, length: 10 }, %)\n |> angledLine({ angle: 120, length: 10 }, %)\n |> line([-10, 0], %)\n |> angledLine({ angle: 240, length: 10 }, %, $referenceEdge)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)\n |> fillet({\n radius: 3,\n tags: [getNextAdjacentEdge(referenceEdge)]\n }, %)" ] }, { - "name": "getNextAdjacentEdge", - "summary": "Get the next adjacent edge to the edge given.", + "name": "getOppositeEdge", + "summary": "Get the opposite edge to the edge given.", "description": "", "tags": [], "args": [ @@ -111836,28 +112319,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -111872,6 +112335,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -111881,32 +112349,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -111917,6 +112359,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -111926,51 +112378,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -111984,27 +112447,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -112014,38 +112467,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -112059,27 +112522,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -112089,38 +112542,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -112134,27 +112597,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -112164,38 +112617,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -112209,27 +112672,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -112239,38 +112692,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -112280,8 +112743,28 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, @@ -112300,12 +112783,12 @@ "unpublished": false, "deprecated": false, "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> angledLine({ angle: 60, length: 10 }, %)\n |> angledLine({ angle: 120, length: 10 }, %)\n |> line([-10, 0], %)\n |> angledLine({ angle: 240, length: 10 }, %, $referenceEdge)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)\n |> fillet({\n radius: 3,\n tags: [getNextAdjacentEdge(referenceEdge)]\n }, %)" + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> angledLine({ angle: 60, length: 10 }, %)\n |> angledLine({ angle: 120, length: 10 }, %)\n |> line([-10, 0], %)\n |> angledLine({ angle: 240, length: 10 }, %, $referenceEdge)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)\n |> fillet({\n radius: 3,\n tags: [getOppositeEdge(referenceEdge)]\n }, %)" ] }, { - "name": "getOppositeEdge", - "summary": "Get the opposite edge to the edge given.", + "name": "getPreviousAdjacentEdge", + "summary": "Get the previous adjacent edge to the edge given.", "description": "", "tags": [], "args": [ @@ -112319,28 +112802,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -112355,6 +112818,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -112364,32 +112832,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -112400,6 +112842,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -112409,69 +112861,41 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, "id": { "description": "The id of the geometry.", "type": "string", @@ -112487,53 +112911,17 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] } } - }, + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ { - "description": "An extruded arc.", + "description": "An extrude plane.", "type": "object", "required": [ "faceId", @@ -112542,27 +112930,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -112572,56 +112950,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, "id": { "description": "The id of the geometry.", "type": "string", @@ -112637,53 +112992,11 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "An extruded arc.", "type": "object", "required": [ "faceId", @@ -112692,27 +113005,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -112722,139 +113025,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "Uuid", - "schema": { - "type": "string", - "format": "uuid" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> angledLine({ angle: 60, length: 10 }, %)\n |> angledLine({ angle: 120, length: 10 }, %)\n |> line([-10, 0], %)\n |> angledLine({ angle: 240, length: 10 }, %, $referenceEdge)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)\n |> fillet({\n radius: 3,\n tags: [getOppositeEdge(referenceEdge)]\n }, %)" - ] - }, - { - "name": "getPreviousAdjacentEdge", - "summary": "Get the previous adjacent edge to the edge given.", - "description": "", - "tags": [], - "args": [ - { - "name": "tag", - "type": "TagIdentifier", - "schema": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { "id": { "description": "The id of the geometry.", "type": "string", @@ -112873,75 +113070,8 @@ } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -112950,27 +113080,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -112980,56 +113100,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, "id": { "description": "The id of the geometry.", "type": "string", @@ -113045,48 +113142,6 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, @@ -113100,27 +113155,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -113130,56 +113175,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, "id": { "description": "The id of the geometry.", "type": "string", @@ -113195,48 +113217,6 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } @@ -113246,8 +113226,28 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, @@ -113286,6 +113286,11 @@ "revolutions" ], "properties": { + "revolutions": { + "description": "Number of revolutions.", + "type": "number", + "format": "double" + }, "angleStart": { "description": "Start angle (in degrees).", "type": "number", @@ -113301,11 +113306,6 @@ "type": "number", "format": "double", "nullable": true - }, - "revolutions": { - "description": "Number of revolutions.", - "type": "number", - "format": "double" } } }, @@ -113325,61 +113325,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -113387,6 +113366,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -113397,56 +113389,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -113454,6 +113516,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -113464,50 +113539,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -113519,61 +113650,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -113587,41 +113759,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -113642,6 +114484,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -113710,23 +114575,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -113749,12 +114598,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -113766,61 +114710,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -113828,66 +114751,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -113895,78 +114826,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -113975,27 +114881,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -114005,43 +114901,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -114050,27 +114956,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -114080,74 +114976,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -114155,74 +115089,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -114230,122 +115156,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -114362,32 +115250,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -114398,6 +115260,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -114407,42 +115279,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -114456,28 +115344,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -114492,6 +115360,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -114501,32 +115374,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -114537,6 +115384,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -114546,51 +115403,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -114604,27 +115472,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -114634,38 +115492,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -114679,27 +115547,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -114709,38 +115567,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -114754,27 +115622,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -114784,38 +115642,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -114829,27 +115697,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -114859,881 +115717,163 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" } - } + }, + "nullable": true }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 2, + "minItems": 2 } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -115741,81 +115881,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -115826,64 +115904,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -115891,81 +115948,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -115976,33 +115971,38 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, @@ -116023,61 +116023,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -116085,6 +116064,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -116095,56 +116087,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -116152,6 +116214,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -116162,50 +116237,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -116217,61 +116348,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -116285,155 +116457,453 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -116447,12 +116917,486 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -116464,61 +117408,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -116526,66 +117449,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -116593,78 +117524,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -116673,27 +117579,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -116703,43 +117599,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -116748,27 +117654,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -116778,74 +117674,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -116853,74 +117787,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -116928,122 +117854,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -117060,32 +117948,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -117096,6 +117958,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -117105,42 +117977,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -117154,28 +118042,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -117190,6 +118058,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -117199,32 +118072,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -117235,6 +118082,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -117244,51 +118101,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -117302,27 +118170,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -117332,38 +118190,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -117377,27 +118245,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -117407,38 +118265,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -117452,27 +118320,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -117482,38 +118340,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -117527,27 +118395,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -117557,38 +118415,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -117598,1109 +118466,241 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 2, + "minItems": 2 + } } } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "from": { - "description": "The from point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] } - } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] }, - { - "description": "A arc that is tangential to the last path segment", + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "from": { - "description": "The from point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, @@ -118736,61 +118736,108 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "sketch" + ] }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -118804,64 +118851,757 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", "required": [ "x", "y", @@ -118927,23 +119667,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -118966,12 +119690,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -118983,61 +119802,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -119045,66 +119843,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -119112,81 +119918,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -119199,569 +119962,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -119779,31 +120148,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -119815,6 +120164,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -119824,63 +120183,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -119906,10 +120235,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -119921,6 +120266,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -119931,6 +120280,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -119940,63 +120299,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -120022,10 +120351,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -120037,6 +120382,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -120047,6 +120396,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -120056,64 +120415,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -120139,10 +120467,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -120154,6 +120499,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -120164,10 +120518,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -120178,62 +120537,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -120259,6 +120589,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -120270,6 +120624,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -120279,66 +120643,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -120364,6 +120695,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -120375,6 +120736,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -120384,73 +120755,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -120476,6 +120807,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -120487,6 +120836,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -120496,6 +120855,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -120506,91 +120878,678 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "value": { - "type": "string" + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -120598,74 +121557,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] } } }, { - "description": "An extruded arc.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -120673,156 +121624,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { "digest": { "type": "array", "items": { @@ -120833,112 +121647,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -120955,32 +121718,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -120991,6 +121728,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -121000,42 +121747,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -121049,28 +121812,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -121085,6 +121828,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -121094,32 +121842,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -121130,6 +121852,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -121139,51 +121871,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -121197,27 +121940,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -121227,38 +121960,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -121272,27 +122015,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -121302,38 +122035,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -121347,27 +122090,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -121377,38 +122110,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -121422,27 +122165,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -121452,38 +122185,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -121493,872 +122236,524 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "type": { - "type": "string", - "enum": [ - "sketch" - ] - }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "type": [ + "object", + "array" + ], + "items": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - { - "type": [ - "object", - "array" - ], - "items": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -122372,42 +122767,358 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { "description": "Type for a plane.", "oneOf": [ { @@ -122427,6 +123138,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -122495,23 +123229,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -122534,12 +123252,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -122551,61 +123364,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -122613,66 +123405,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -122680,78 +123480,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -122760,27 +123535,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -122790,43 +123555,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -122835,27 +123610,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -122865,74 +123630,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -122940,74 +123743,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -123015,122 +123810,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -123147,32 +123904,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -123183,6 +123914,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -123192,42 +123933,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -123241,28 +123998,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -123277,6 +124014,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -123286,32 +124028,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -123322,6 +124038,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -123331,51 +124057,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -123389,27 +124126,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -123419,38 +124146,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -123464,27 +124201,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -123494,38 +124221,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -123539,27 +124276,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -123569,38 +124296,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -123614,27 +124351,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -123644,38 +124371,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -123685,880 +124422,300 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "sketches" + ] + } + } + } + ] + }, + "required": true + }, + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sketches" - ] - } - } - } - ] - }, - "required": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -124572,155 +124729,231 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -124734,78 +124967,637 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] }, - "radius": { - "type": "number", - "format": "double" + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -124813,6 +125605,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -124823,56 +125628,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -124880,6 +125755,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -124890,50 +125778,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -124945,608 +125889,89 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "path": { - "description": "The path the tag is on.", + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -125572,6 +125997,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -125583,6 +126042,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -125592,63 +126061,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -125674,10 +126113,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -125689,6 +126144,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -125699,6 +126158,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -125708,63 +126177,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -125790,10 +126229,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -125805,6 +126261,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -125815,6 +126280,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -125824,64 +126299,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -125907,13 +126351,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -125922,8 +126386,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -125932,11 +126396,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -125946,62 +126405,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -126027,6 +126457,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -126038,6 +126498,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -126047,66 +126517,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -126132,6 +126569,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -126143,6 +126598,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -126152,73 +126617,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", "nullable": true }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -126244,121 +126669,649 @@ "minItems": 2 } } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -126366,81 +127319,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -126451,64 +127342,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -126516,81 +127386,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -126601,128 +127409,133 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "type": { - "type": "string", - "enum": [ - "face" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + ] + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "value": { - "description": "The tag of the face.", "type": "string" }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } - } - } - ] - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -126748,62 +127561,6 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 } } }, @@ -126817,28 +127574,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -126853,6 +127590,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -126862,32 +127604,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -126898,6 +127614,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -126907,51 +127633,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -126965,27 +127702,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -126995,38 +127722,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -127040,27 +127777,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -127070,38 +127797,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -127115,27 +127852,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -127145,38 +127872,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -127190,27 +127927,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -127220,38 +127947,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -127261,841 +127998,861 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "radius": { - "description": "the arc's radius", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true + "format": "double" }, - "y": { - "description": "The y coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] - } - } - } - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -128113,34 +128870,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -128164,32 +128924,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -128258,23 +128992,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -128297,12 +129015,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -128314,61 +129127,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -128376,6 +129168,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -128386,56 +129191,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -128443,6 +129318,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -128453,50 +129341,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -128508,682 +129452,370 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } }, - "info": { - "description": "Engine information for a tag.", + { + "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "TangentialArcTo" + ] }, - "path": { - "description": "The path the tag is on.", + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "to": { - "description": "The to point.", + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { "type": "string", - "format": "uuid" + "enum": [ + "Circle" + ] }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", + "center": { + "description": "the arc's center", "type": "array", "items": { "type": "number", @@ -129192,58 +129824,17 @@ "maxItems": 2, "minItems": 2 }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" }, "ccw": { "description": "arc's direction", "type": "boolean" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -129252,8 +129843,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -129271,63 +129862,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -129353,13 +129914,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -129368,8 +129949,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -129387,64 +129968,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -129470,13 +130020,39 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true }, - "center": { - "description": "the arc's center", + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -129485,8 +130061,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -129495,11 +130071,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -129509,62 +130080,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -129590,78 +130132,11 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" } } }, { - "description": "An angled line to.", + "description": "A base path.", "type": "object", "required": [ "__geoMeta", @@ -129670,31 +130145,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -129706,6 +130161,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -129715,73 +130180,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -129807,183 +130232,579 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, - { - "description": "An extruded arc.", + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -129994,84 +130815,66 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } - }, + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -130079,74 +130882,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -130154,122 +130949,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -130286,32 +131043,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -130322,6 +131053,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -130331,42 +131072,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -130380,28 +131137,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -130416,6 +131153,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -130425,32 +131167,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -130461,60 +131177,81 @@ "maxItems": 2, "minItems": 2 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -130528,27 +131265,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -130558,38 +131285,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -130603,27 +131340,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -130633,38 +131360,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -130678,27 +131415,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -130708,38 +131435,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -130753,27 +131490,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -130783,38 +131510,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -130824,1016 +131561,410 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XY')\n |> startProfileAt([0, 0], %)\n |> line([0, 5], %)\n |> line([5, 0], %)\n |> line([0, -5], %)\n |> close(%)\n |> hole(circle({ center: [1, 1], radius: .25 }, %), %)\n |> hole(circle({ center: [1, 4], radius: .25 }, %), %)\n\nconst example = extrude(1, exampleSketch)", + "fn squareHoleSketch = () => {\n const squareSketch = startSketchOn('-XZ')\n |> startProfileAt([-1, -1], %)\n |> line([2, 0], %)\n |> line([0, 2], %)\n |> line([-2, 0], %)\n |> close(%)\n return squareSketch\n}\n\nconst exampleSketch = startSketchOn('-XZ')\n |> circle({ center: [0, 0], radius: 3 }, %)\n |> hole(squareHoleSketch(), %)\nconst example = extrude(1, exampleSketch)" + ] + }, + { + "name": "hollow", + "summary": "Make the inside of a 3D object hollow.", + "description": "Remove volume from a 3-dimensional shape such that a wall of the provided thickness remains around the exterior of the shape.", + "tags": [], + "args": [ + { + "name": "thickness", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "solid", + "type": "Solid", + "schema": { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XY')\n |> startProfileAt([0, 0], %)\n |> line([0, 5], %)\n |> line([5, 0], %)\n |> line([0, -5], %)\n |> close(%)\n |> hole(circle({ center: [1, 1], radius: .25 }, %), %)\n |> hole(circle({ center: [1, 4], radius: .25 }, %), %)\n\nconst example = extrude(1, exampleSketch)", - "fn squareHoleSketch = () => {\n const squareSketch = startSketchOn('-XZ')\n |> startProfileAt([-1, -1], %)\n |> line([2, 0], %)\n |> line([0, 2], %)\n |> line([-2, 0], %)\n |> close(%)\n return squareSketch\n}\n\nconst exampleSketch = startSketchOn('-XZ')\n |> circle({ center: [0, 0], radius: 3 }, %)\n |> hole(squareHoleSketch(), %)\nconst example = extrude(1, exampleSketch)" - ] - }, - { - "name": "hollow", - "summary": "Make the inside of a 3D object hollow.", - "description": "Remove volume from a 3-dimensional shape such that a wall of the provided thickness remains around the exterior of the shape.", - "tags": [], - "args": [ - { - "name": "thickness", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "solid", - "type": "Solid", - "schema": { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, "id": { - "description": "The id of the engine command that called this chamfer.", + "description": "The id of the geometry.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -131845,61 +131976,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -131913,155 +132085,109 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -132075,78 +132201,875 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -132154,66 +133077,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -132221,78 +133152,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -132301,27 +133207,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -132331,6 +133227,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -132341,33 +133250,30 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -132376,27 +133282,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -132406,74 +133302,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -132481,74 +133415,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -132556,122 +133482,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -132688,32 +133576,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -132724,6 +133586,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -132733,42 +133605,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -132782,28 +133670,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -132818,6 +133686,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -132827,32 +133700,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -132863,6 +133710,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -132872,51 +133729,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -132930,27 +133798,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -132960,38 +133818,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -133005,27 +133873,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -133035,38 +133893,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -133080,27 +133948,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -133110,38 +133968,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -133155,27 +134023,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -133185,38 +134043,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -133226,922 +134094,132 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -134152,64 +134230,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -134217,81 +134274,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -134302,33 +134297,38 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, @@ -134349,61 +134349,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -134411,6 +134390,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -134421,56 +134413,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -134478,6 +134540,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -134488,50 +134563,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -134543,61 +134674,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -134611,155 +134783,453 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -134773,78 +135243,531 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] }, - "radius": { - "type": "number", - "format": "double" + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -134852,66 +135775,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -134919,78 +135850,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -134999,27 +135905,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -135029,43 +135925,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -135074,27 +135980,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -135104,74 +136000,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -135179,74 +136113,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -135254,122 +136180,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -135386,32 +136274,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -135422,6 +136284,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -135431,42 +136303,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -135480,28 +136368,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -135516,6 +136384,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -135525,32 +136398,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -135561,6 +136408,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -135570,51 +136427,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -135628,27 +136496,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -135658,38 +136516,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -135703,27 +136571,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -135733,38 +136591,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -135778,27 +136646,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -135808,38 +136666,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -135853,27 +136721,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -135883,38 +136741,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -135924,1194 +136792,332 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 32, + "minItems": 32, + "nullable": true } - } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "from": { - "description": "The from point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] } - } - }, - { - "description": "A arc that is tangential to the last path segment", + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "// Hollow a basic sketch.\nconst firstSketch = startSketchOn('XY')\n |> startProfileAt([-12, 12], %)\n |> line([24, 0], %)\n |> line([0, -24], %)\n |> line([-24, 0], %)\n |> close(%)\n |> extrude(6, %)\n |> hollow(0.25, %)", + "// Hollow a basic sketch.\nconst firstSketch = startSketchOn('-XZ')\n |> startProfileAt([-12, 12], %)\n |> line([24, 0], %)\n |> line([0, -24], %)\n |> line([-24, 0], %)\n |> close(%)\n |> extrude(6, %)\n |> hollow(0.5, %)", + "// Hollow a sketch on face object.\nlet size = 100\nconst case = startSketchOn('-XZ')\n |> startProfileAt([-size, -size], %)\n |> line([2 * size, 0], %)\n |> line([0, 2 * size], %)\n |> tangentialArcTo([-size, size], %)\n |> close(%)\n |> extrude(65, %)\n\nconst thing1 = startSketchOn(case, 'end')\n |> circle({\n center: [-size / 2, -size / 2],\n radius: 25\n }, %)\n |> extrude(50, %)\n\nconst thing2 = startSketchOn(case, 'end')\n |> circle({\n center: [size / 2, -size / 2],\n radius: 25\n }, %)\n |> extrude(50, %)\n\nhollow(0.5, case)" + ] + }, + { + "name": "import", + "summary": "Import a CAD file.", + "description": "For formats lacking unit data (such as STL, OBJ, or PLY files), the default unit of measurement is millimeters. Alternatively you may specify the unit by passing your desired measurement unit in the options parameter. When importing a GLTF file, the bin file will be imported as well. Import paths are relative to the current project directory.\nNote: The import command currently only works when using the native Modeling App.", + "tags": [], + "args": [ + { + "name": "file_path", + "type": "String", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "options", + "type": "ImportFormat", + "schema": { + "description": "Import format specifier", + "oneOf": [ + { + "description": "Autodesk Filmbox (FBX) format", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fbx" + ] + } + } + }, + { + "description": "Binary glTF 2.0. We refer to this as glTF since that is how our customers refer to it, but this can also import binary glTF (glb).", + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "gltf" + ] + } + } + }, + { + "description": "Wavefront OBJ format.", + "type": "object", + "required": [ + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "obj" + ] + }, + "coords": { + "description": "Co-ordinate system of input data. Defaults to the [KittyCAD co-ordinate system.", + "type": "object", + "required": [ + "forward", + "up" + ], + "properties": { + "forward": { + "description": "Axis the front face of a model looks along.", "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "// Hollow a basic sketch.\nconst firstSketch = startSketchOn('XY')\n |> startProfileAt([-12, 12], %)\n |> line([24, 0], %)\n |> line([0, -24], %)\n |> line([-24, 0], %)\n |> close(%)\n |> extrude(6, %)\n |> hollow(0.25, %)", - "// Hollow a basic sketch.\nconst firstSketch = startSketchOn('-XZ')\n |> startProfileAt([-12, 12], %)\n |> line([24, 0], %)\n |> line([0, -24], %)\n |> line([-24, 0], %)\n |> close(%)\n |> extrude(6, %)\n |> hollow(0.5, %)", - "// Hollow a sketch on face object.\nlet size = 100\nconst case = startSketchOn('-XZ')\n |> startProfileAt([-size, -size], %)\n |> line([2 * size, 0], %)\n |> line([0, 2 * size], %)\n |> tangentialArcTo([-size, size], %)\n |> close(%)\n |> extrude(65, %)\n\nconst thing1 = startSketchOn(case, 'end')\n |> circle({\n center: [-size / 2, -size / 2],\n radius: 25\n }, %)\n |> extrude(50, %)\n\nconst thing2 = startSketchOn(case, 'end')\n |> circle({\n center: [size / 2, -size / 2],\n radius: 25\n }, %)\n |> extrude(50, %)\n\nhollow(0.5, case)" - ] - }, - { - "name": "import", - "summary": "Import a CAD file.", - "description": "For formats lacking unit data (such as STL, OBJ, or PLY files), the default unit of measurement is millimeters. Alternatively you may specify the unit by passing your desired measurement unit in the options parameter. When importing a GLTF file, the bin file will be imported as well. Import paths are relative to the current project directory.\nNote: The import command currently only works when using the native Modeling App.", - "tags": [], - "args": [ - { - "name": "file_path", - "type": "String", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "options", - "type": "ImportFormat", - "schema": { - "description": "Import format specifier", - "oneOf": [ - { - "description": "Autodesk Filmbox (FBX) format", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fbx" - ] - } - } - }, - { - "description": "Binary glTF 2.0. We refer to this as glTF since that is how our customers refer to it, but this can also import binary glTF (glb).", - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "gltf" - ] - } - } - }, - { - "description": "Wavefront OBJ format.", - "type": "object", - "required": [ - "type", - "units" - ], - "properties": { - "coords": { - "description": "Co-ordinate system of input data. Defaults to the [KittyCAD co-ordinate system.", - "type": "object", - "required": [ - "forward", - "up" - ], - "properties": { - "forward": { - "description": "Axis the front face of a model looks along.", - "type": "object", - "required": [ - "axis", - "direction" + "axis", + "direction" ], "properties": { "axis": { @@ -137205,12 +137211,6 @@ }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "obj" - ] - }, "units": { "description": "The units of the input data. This is very important for correct scaling and when calculating physics properties like mass, etc. Defaults to millimeters.", "oneOf": [ @@ -137268,6 +137268,12 @@ "units" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ply" + ] + }, "coords": { "description": "Co-ordinate system of input data. Defaults to the [KittyCAD co-ordinate system.", "type": "object", @@ -137375,12 +137381,6 @@ }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "ply" - ] - }, "units": { "description": "The units of the input data. This is very important for correct scaling and when calculating physics properties like mass, etc. Defaults to millimeters.", "oneOf": [ @@ -137468,6 +137468,12 @@ "units" ], "properties": { + "type": { + "type": "string", + "enum": [ + "stl" + ] + }, "coords": { "description": "Co-ordinate system of input data. Defaults to the [KittyCAD co-ordinate system.", "type": "object", @@ -137575,12 +137581,6 @@ }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "stl" - ] - }, "units": { "description": "The units of the input data. This is very important for correct scaling and when calculating physics properties like mass, etc. Defaults to millimeters.", "oneOf": [ @@ -137648,6 +137648,18 @@ "value" ], "properties": { + "id": { + "description": "The ID of the imported geometry.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The original file paths.", + "type": "array", + "items": { + "type": "string" + } + }, "__meta": { "type": "array", "items": { @@ -137670,18 +137682,6 @@ } } } - }, - "id": { - "description": "The ID of the imported geometry.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The original file paths.", - "type": "array", - "items": { - "type": "string" - } } } }, @@ -137773,61 +137773,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", "type": "array", "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -137841,41 +137882,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -137896,6 +138607,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -137964,23 +138698,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -138003,12 +138721,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -138020,61 +138833,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -138082,66 +138874,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -138149,81 +138949,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -138236,569 +138993,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -138816,31 +139179,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -138852,6 +139195,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -138861,63 +139214,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -138943,10 +139266,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -138958,6 +139297,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -138968,6 +139311,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -138977,63 +139330,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -139059,10 +139382,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -139074,6 +139413,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -139084,73 +139427,52 @@ "maxItems": 2, "minItems": 2 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -139176,10 +139498,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -139191,6 +139530,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -139201,10 +139549,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -139215,62 +139568,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -139296,6 +139620,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -139307,6 +139655,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -139316,66 +139674,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -139401,6 +139726,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -139412,6 +139767,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -139421,73 +139786,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -139513,6 +139838,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -139524,6 +139867,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -139533,449 +139886,853 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "Geometry metadata.", + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "__meta", + "value" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "tag": { - "description": "The tag.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -139992,32 +140749,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -140028,6 +140759,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -140037,42 +140778,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -140086,28 +140843,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -140122,6 +140859,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -140131,32 +140873,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -140167,6 +140883,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -140176,51 +140902,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -140234,27 +140971,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -140264,38 +140991,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -140309,27 +141046,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -140339,38 +141066,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -140384,27 +141121,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -140414,38 +141141,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -140459,27 +141196,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -140489,38 +141216,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -140530,11 +141267,100 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + } + } + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> line([5, 0], %)\n |> line([20, 5], %)\n |> line([lastSegX(%), 0], %)\n |> line([-15, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" + ] + }, + { + "name": "lastSegY", + "summary": "Extract the 'y' axis value of the last line segment in the provided 2-d", + "description": "sketch.", + "tags": [], + "args": [ + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -140552,31 +141378,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -140588,6 +141394,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -140597,63 +141413,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -140679,10 +141465,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -140694,6 +141496,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -140704,6 +141510,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -140713,63 +141529,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -140795,10 +141581,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -140810,6 +141612,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -140820,6 +141626,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -140829,64 +141645,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -140912,10 +141697,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -140927,6 +141729,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -140937,10 +141748,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -140951,62 +141767,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -141032,6 +141819,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -141043,6 +141854,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -141052,66 +141873,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -141137,6 +141925,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -141148,6 +141966,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -141157,73 +141985,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -141249,6 +142037,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -141260,6 +142066,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -141269,122 +142085,63 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> line([5, 0], %)\n |> line([20, 5], %)\n |> line([lastSegX(%), 0], %)\n |> line([-15, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "lastSegY", - "summary": "Extract the 'y' axis value of the last line segment in the provided 2-d", - "description": "sketch.", - "tags": [], - "args": [ - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" }, "on": { "description": "What the sketch is on (can be a plane or a face).", @@ -141403,34 +142160,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -141454,32 +142214,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -141548,23 +142282,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -141587,78 +142305,152 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, - "solid": { - "description": "The solid the face is on.", + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", "type": "object", "required": [ - "__meta", - "height", - "id", - "sketch", - "value" + "x", + "y", + "z" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "x": { + "type": "number", + "format": "double" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -141666,66 +142458,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -141733,81 +142533,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -141820,569 +142577,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -142400,31 +142763,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -142436,6 +142779,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -142445,63 +142798,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -142527,21 +142850,41 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -142552,6 +142895,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -142561,63 +142914,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -142643,10 +142966,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -142658,6 +142997,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -142668,6 +143011,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -142677,64 +143030,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -142760,10 +143082,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -142775,6 +143114,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -142785,10 +143133,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -142799,62 +143152,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -142880,6 +143204,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -142891,6 +143239,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -142900,66 +143258,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -142985,6 +143310,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -142996,6 +143351,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -143005,73 +143370,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -143097,6 +143422,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -143108,6 +143451,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -143117,449 +143470,853 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "Geometry metadata.", + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "__meta", + "value" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "tag": { - "description": "The tag.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", "type": "number", "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -143576,32 +144333,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -143612,6 +144343,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -143621,42 +144362,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -143670,28 +144427,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -143706,6 +144443,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -143715,32 +144457,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -143751,6 +144467,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -143760,51 +144486,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -143818,27 +144555,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -143848,38 +144575,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -143893,27 +144630,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -143923,39 +144650,49 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] - } + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } }, { @@ -143968,27 +144705,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -143998,38 +144725,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -144043,27 +144780,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -144073,38 +144800,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -144114,11 +144851,240 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + } + } + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> line([5, 0], %)\n |> line([20, 5], %)\n |> line([0, lastSegY(%)], %)\n |> line([-15, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" + ] + }, + { + "name": "legAngX", + "summary": "Compute the angle of the given leg for x.", + "description": "", + "tags": [ + "utilities" + ], + "args": [ + { + "name": "hypotenuse", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "leg", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "legAngX(5, 3)" + ] + }, + { + "name": "legAngY", + "summary": "Compute the angle of the given leg for y.", + "description": "", + "tags": [ + "utilities" + ], + "args": [ + { + "name": "hypotenuse", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "leg", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "legAngY(5, 3)" + ] + }, + { + "name": "legLen", + "summary": "Compute the length of the given leg.", + "description": "", + "tags": [ + "utilities" + ], + "args": [ + { + "name": "hypotenuse", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "leg", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "legLen(5, 3)" + ] + }, + { + "name": "line", + "summary": "Draw a line relative to the current origin to a specified (x, y) away", + "description": "from the current position.", + "tags": [], + "args": [ + { + "name": "delta", + "type": "[number]", + "schema": { + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "required": true + }, + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -144136,31 +145102,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -144172,6 +145118,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -144181,63 +145137,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -144263,10 +145189,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -144278,6 +145220,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -144288,6 +145234,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -144297,63 +145253,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -144379,10 +145305,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -144394,6 +145336,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -144404,6 +145350,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -144413,64 +145369,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -144496,10 +145421,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -144511,6 +145453,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -144521,10 +145472,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -144535,62 +145491,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -144616,6 +145543,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -144627,6 +145578,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -144636,66 +145597,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -144721,6 +145649,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -144732,6 +145690,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -144741,73 +145709,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -144833,6 +145761,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -144844,6 +145790,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -144853,262 +145809,63 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> line([5, 0], %)\n |> line([20, 5], %)\n |> line([0, lastSegY(%)], %)\n |> line([-15, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "legAngX", - "summary": "Compute the angle of the given leg for x.", - "description": "", - "tags": [ - "utilities" - ], - "args": [ - { - "name": "hypotenuse", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "leg", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "legAngX(5, 3)" - ] - }, - { - "name": "legAngY", - "summary": "Compute the angle of the given leg for y.", - "description": "", - "tags": [ - "utilities" - ], - "args": [ - { - "name": "hypotenuse", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "leg", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "legAngY(5, 3)" - ] - }, - { - "name": "legLen", - "summary": "Compute the length of the given leg.", - "description": "", - "tags": [ - "utilities" - ], - "args": [ - { - "name": "hypotenuse", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "leg", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "legLen(5, 3)" - ] - }, - { - "name": "line", - "summary": "Draw a line relative to the current origin to a specified (x, y) away", - "description": "from the current position.", - "tags": [], - "args": [ - { - "name": "delta", - "type": "[number]", - "schema": { - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "required": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" }, "on": { "description": "What the sketch is on (can be a plane or a face).", @@ -145127,34 +145884,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -145178,32 +145938,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -145272,23 +146006,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -145311,12 +146029,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -145328,61 +146141,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -145390,6 +146182,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -145400,56 +146205,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -145457,6 +146332,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -145467,50 +146355,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -145522,608 +146466,89 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "ToPoint" + ] }, - "path": { - "description": "The path the tag is on.", + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -146149,6 +146574,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -146160,6 +146619,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -146169,63 +146638,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -146251,10 +146690,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -146266,6 +146721,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -146276,6 +146735,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -146285,63 +146754,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -146367,10 +146806,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -146382,6 +146838,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -146392,6 +146857,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -146401,64 +146876,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -146484,13 +146928,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -146499,8 +146963,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -146509,11 +146973,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -146523,62 +146982,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -146604,6 +147034,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -146615,6 +147075,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -146624,66 +147094,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -146709,6 +147146,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -146720,6 +147175,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -146729,73 +147194,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -146821,183 +147246,579 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "tag": { - "description": "The tag.", + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true }, - "value": { - "type": "string" + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, - { - "description": "An extruded arc.", + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -147008,84 +147829,66 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } - }, + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -147093,74 +147896,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -147168,122 +147963,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -147300,32 +148057,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -147336,6 +148067,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -147345,42 +148086,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -147394,28 +148151,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -147430,41 +148167,20 @@ "type": "string", "format": "uuid" }, - "path": { - "description": "The path the tag is on.", - "type": "object", + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", "required": [ "__geoMeta", "from", "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -147475,6 +148191,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -147484,51 +148210,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -147542,27 +148279,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -147572,38 +148299,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -147617,27 +148354,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -147647,38 +148374,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -147692,27 +148429,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -147722,38 +148449,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -147767,27 +148504,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -147797,38 +148524,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -147838,881 +148575,901 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + } + } + }, + "required": true + }, + { + "name": "tag", + "type": "TagDeclarator", + "schema": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "value": { - "description": "The paths in the sketch.", + "type": "string" + }, + "digest": { "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "required": false + } + ], + "returnValue": { + "name": "", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "radius": { - "description": "the arc's radius", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true + "format": "double" }, - "y": { - "description": "The y coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] - } - } - } - }, - "required": true - }, - { - "name": "tag", - "type": "TagDeclarator", - "schema": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "required": false - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -148730,34 +149487,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -148781,32 +149541,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -148875,23 +149609,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -148914,12 +149632,107 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -148931,61 +149744,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -148993,66 +149785,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -149060,81 +149860,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -149147,569 +149904,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -149727,31 +150090,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -149763,6 +150106,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -149772,63 +150125,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 2, - "minItems": 2 + "nullable": true }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -149854,10 +150177,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -149869,6 +150208,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -149879,6 +150222,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -149888,63 +150241,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -149970,10 +150293,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -149985,6 +150324,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -149995,6 +150338,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -150004,64 +150357,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -150087,10 +150409,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -150102,6 +150441,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -150112,10 +150460,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -150126,62 +150479,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -150207,6 +150531,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -150218,6 +150566,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -150227,66 +150585,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -150312,6 +150637,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -150323,6 +150678,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -150332,73 +150697,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -150424,6 +150749,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -150435,6 +150778,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -150444,449 +150797,853 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "Geometry metadata.", + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "__meta", + "value" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "tag": { - "description": "The tag.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } }, - "y": { + "height": { + "description": "The height of the solid.", "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true }, - "y": { - "type": "number", - "format": "double" + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true }, - "z": { - "type": "number", - "format": "double" + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -150903,32 +151660,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -150939,6 +151670,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -150948,42 +151689,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -150997,28 +151754,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -151033,6 +151770,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -151042,32 +151784,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -151078,6 +151794,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -151087,51 +151813,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -151145,27 +151882,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -151175,38 +151902,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -151220,27 +151957,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -151250,38 +151977,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -151295,27 +152032,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -151325,38 +152052,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -151370,27 +152107,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -151400,38 +152127,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -151441,791 +152178,54 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 2, + "minItems": 2 } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } @@ -152273,61 +152273,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -152341,41 +152382,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -152396,6 +153107,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -152464,23 +153198,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -152503,12 +153221,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -152520,61 +153333,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -152582,66 +153374,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] - } - } + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -152649,81 +153449,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -152736,569 +153493,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -153316,31 +153679,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -153352,6 +153695,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -153361,63 +153714,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -153443,10 +153766,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -153458,6 +153797,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -153468,6 +153811,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -153477,63 +153830,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -153559,10 +153882,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -153574,6 +153913,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -153584,6 +153927,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -153593,64 +153946,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 2, - "minItems": 2 + "nullable": true }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -153676,10 +153998,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -153691,6 +154030,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -153701,10 +154049,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -153715,62 +154068,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -153796,6 +154120,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -153807,6 +154155,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -153816,66 +154174,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -153901,6 +154226,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -153912,6 +154267,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -153921,73 +154286,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -154013,6 +154338,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -154024,6 +154367,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -154033,491 +154386,869 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "Geometry metadata.", + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "__meta", + "value" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "tag": { - "description": "The tag.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - } - ] - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "__meta": { + "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, + } + ] + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { "from": { "description": "The from point.", "type": "array", @@ -154528,6 +155259,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -154537,42 +155278,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -154586,28 +155343,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -154622,6 +155359,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -154631,32 +155373,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -154667,6 +155383,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -154676,51 +155402,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -154734,27 +155471,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -154764,38 +155491,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -154809,27 +155546,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -154839,38 +155566,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -154884,27 +155621,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -154914,38 +155641,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -154959,27 +155696,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -154989,38 +155716,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -155030,791 +155767,54 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 2, + "minItems": 2 } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } @@ -155832,29 +155832,29 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true @@ -155876,61 +155876,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -155944,41 +155985,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -155999,6 +156710,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -156067,23 +156801,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -156106,12 +156824,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -156123,61 +156936,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -156185,66 +156977,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -156252,6 +157052,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -156262,71 +157075,90 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -156339,569 +157171,100 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -156919,31 +157282,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -156955,6 +157298,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -156964,63 +157317,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -157046,10 +157369,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -157061,6 +157400,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -157071,6 +157414,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -157080,63 +157433,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -157162,10 +157485,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -157177,6 +157516,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -157187,6 +157530,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -157196,64 +157549,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -157279,10 +157601,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -157294,6 +157633,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -157304,10 +157652,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -157318,62 +157671,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -157399,6 +157723,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -157410,6 +157758,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -157419,66 +157777,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -157504,6 +157829,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -157515,6 +157870,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -157524,73 +157889,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -157616,6 +157941,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -157627,6 +157970,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -157636,6 +157989,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -157646,91 +158012,678 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "value": { - "type": "string" + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -157738,149 +158691,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] } } }, { - "description": "An extruded arc.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" + "length": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", + "edgeId": { + "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -157888,81 +158758,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -157973,112 +158781,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -158095,32 +158852,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -158131,6 +158862,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -158140,42 +158881,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -158189,28 +158946,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -158225,6 +158962,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -158234,32 +158976,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -158270,6 +158986,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -158279,51 +159005,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -158337,27 +159074,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -158367,38 +159094,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -158412,27 +159149,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -158442,38 +159169,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -158487,27 +159224,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -158517,38 +159244,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -158562,27 +159299,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -158592,38 +159319,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -158633,887 +159370,907 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> lineTo([10, 0], %)\n |> lineTo([0, 10], %)\n |> lineTo([-10, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" + ] + }, + { + "name": "ln", + "summary": "Compute the natural logarithm of the number.", + "description": "", + "tags": [ + "math" + ], + "args": [ + { + "name": "num", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> line([ln(100), 15], %)\n |> line([5, -6], %)\n |> line([-10, -10], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" + ] + }, + { + "name": "loft", + "summary": "Create a 3D surface or solid by interpolating between two or more sketches.", + "description": "The sketches need to closed and on the same plane.", + "tags": [], + "args": [ + { + "name": "sketches", + "type": "[Sketch]", + "schema": { + "type": "array", + "items": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", "type": "object", "required": [ - "id", - "sourceRange" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the geometry.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "ToPoint" + ] }, - "sourceRange": { - "description": "The source range.", + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + }, + "to": { + "description": "The to point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + { + "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ - "id", - "sourceRange" + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the geometry.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "TangentialArcTo" + ] }, - "sourceRange": { - "description": "The source range.", + "center": { + "description": "the arc's center", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + { + "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ - "id", - "sourceRange" + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the geometry.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "TangentialArc" + ] }, - "sourceRange": { - "description": "The source range.", + "center": { + "description": "the arc's center", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + { + "description": "a complete arc", "type": "object", "required": [ - "id", - "sourceRange" + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the geometry.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "Circle" + ] }, - "sourceRange": { - "description": "The source range.", + "center": { + "description": "the arc's center", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + { + "description": "A path that is horizontal.", "type": "object", "required": [ - "id", - "sourceRange" + "__geoMeta", + "from", + "to", + "type", + "x" ], "properties": { - "id": { - "description": "The id of the geometry.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "Horizontal" + ] }, - "sourceRange": { - "description": "The source range.", + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + }, + "to": { + "description": "The to point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] + } }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + { + "description": "An angled line to.", "type": "object", "required": [ - "id", - "sourceRange" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the geometry.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "AngledLineTo" + ] }, - "sourceRange": { - "description": "The source range.", + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + }, + "to": { + "description": "The to point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true + } }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + { + "description": "A base path.", "type": "object", "required": [ - "id", - "sourceRange" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the geometry.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "Base" + ] }, - "sourceRange": { - "description": "The source range.", + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + }, + "to": { + "description": "The to point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> lineTo([10, 0], %)\n |> lineTo([0, 10], %)\n |> lineTo([-10, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "ln", - "summary": "Compute the natural logarithm of the number.", - "description": "", - "tags": [ - "math" - ], - "args": [ - { - "name": "num", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> line([ln(100), 15], %)\n |> line([5, -6], %)\n |> line([-10, -10], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "loft", - "summary": "Create a 3D surface or solid by interpolating between two or more sketches.", - "description": "The sketches need to closed and on the same plane.", - "tags": [], - "args": [ - { - "name": "sketches", - "type": "[Sketch]", - "schema": { - "type": "array", - "items": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + } } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -159531,34 +160288,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -159582,32 +160342,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -159676,23 +160410,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -159715,12 +160433,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -159732,61 +160545,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -159794,66 +160586,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -159861,78 +160661,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -159941,27 +160716,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -159971,43 +160736,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -160016,27 +160791,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -160046,74 +160811,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -160121,74 +160924,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -160196,122 +160991,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -160328,32 +161085,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -160364,6 +161095,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -160373,42 +161114,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -160422,28 +161179,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -160458,6 +161195,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -160467,32 +161209,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -160503,6 +161219,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -160512,51 +161238,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -160570,27 +161307,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -160600,38 +161327,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -160645,27 +161382,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -160675,38 +161402,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -160720,27 +161457,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -160750,38 +161477,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -160795,27 +161532,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -160825,38 +161552,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -160866,11 +161603,445 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "required": true + }, + { + "name": "data", + "type": "LoftData", + "schema": { + "description": "Data for a loft.", + "type": "object", + "properties": { + "vDegree": { + "description": "Degree of the interpolation. Must be greater than zero. For example, use 2 for quadratic, or 3 for cubic interpolation in the V direction. This defaults to 2, if not specified.", + "type": "integer", + "format": "uint32", + "minimum": 1.0, + "nullable": true + }, + "bezApproximateRational": { + "description": "Attempt to approximate rational curves (such as arcs) using a bezier. This will remove banding around interpolations between arcs and non-arcs. It may produce errors in other scenarios Over time, this field won't be necessary.", + "default": null, + "type": "boolean", + "nullable": true + }, + "baseCurveIndex": { + "description": "This can be set to override the automatically determined topological base curve, which is usually the first section encountered.", + "default": null, + "type": "integer", + "format": "uint32", + "minimum": 0.0, + "nullable": true + }, + "tolerance": { + "description": "Tolerance for the loft operation.", + "default": null, + "type": "number", + "format": "double", + "nullable": true + } + }, + "nullable": true + }, + "required": false + } + ], + "returnValue": { + "name": "", + "type": "Solid", + "schema": { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -160888,31 +162059,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -160924,6 +162075,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -160933,63 +162094,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -161015,10 +162146,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -161030,6 +162177,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -161040,6 +162191,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -161049,63 +162210,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -161131,10 +162262,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -161146,6 +162293,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -161156,6 +162307,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -161165,64 +162326,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -161248,10 +162378,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -161263,6 +162410,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -161273,10 +162429,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -161287,62 +162448,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -161368,6 +162500,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -161379,6 +162535,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -161388,66 +162554,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -161473,6 +162606,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -161484,6 +162647,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -161493,73 +162666,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -161585,6 +162718,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -161596,6 +162747,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -161605,336 +162766,63 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - } - }, - "required": true - }, - { - "name": "data", - "type": "LoftData", - "schema": { - "description": "Data for a loft.", - "type": "object", - "properties": { - "baseCurveIndex": { - "description": "This can be set to override the automatically determined topological base curve, which is usually the first section encountered.", - "default": null, - "type": "integer", - "format": "uint32", - "minimum": 0.0, - "nullable": true - }, - "bezApproximateRational": { - "description": "Attempt to approximate rational curves (such as arcs) using a bezier. This will remove banding around interpolations between arcs and non-arcs. It may produce errors in other scenarios Over time, this field won't be necessary.", - "default": null, - "type": "boolean", - "nullable": true - }, - "tolerance": { - "description": "Tolerance for the loft operation.", - "default": null, - "type": "number", - "format": "double", - "nullable": true - }, - "vDegree": { - "description": "Degree of the interpolation. Must be greater than zero. For example, use 2 for quadratic, or 3 for cubic interpolation in the V direction. This defaults to 2, if not specified.", - "type": "integer", - "format": "uint32", - "minimum": 1.0, - "nullable": true - } - }, - "nullable": true - }, - "required": false - } - ], - "returnValue": { - "name": "", - "type": "Solid", - "schema": { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" }, "on": { "description": "What the sketch is on (can be a plane or a face).", @@ -161953,34 +162841,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -162004,32 +162895,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -162098,23 +162963,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -162137,78 +162986,152 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, - "solid": { - "description": "The solid the face is on.", + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", "type": "object", "required": [ - "__meta", - "height", - "id", - "sketch", - "value" + "x", + "y", + "z" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "x": { + "type": "number", + "format": "double" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -162216,66 +163139,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -162283,78 +163214,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -162363,27 +163269,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -162393,43 +163289,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -162438,27 +163344,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -162468,74 +163364,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -162543,74 +163477,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -162618,122 +163544,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -162750,32 +163638,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -162786,6 +163648,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -162795,42 +163667,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -162844,28 +163732,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -162880,6 +163748,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -162889,32 +163762,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -162925,6 +163772,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -162934,51 +163791,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -162992,27 +163860,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -163022,38 +163880,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -163067,27 +163935,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -163097,38 +163955,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -163142,27 +164010,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -163172,38 +164030,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -163217,27 +164085,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -163247,38 +164105,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -163288,1440 +164156,1712 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 32, + "minItems": 32, + "nullable": true } - } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "from": { - "description": "The from point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] } - } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "// Loft a square and a triangle.\nconst squareSketch = startSketchOn('XY')\n |> startProfileAt([-100, 200], %)\n |> line([200, 0], %)\n |> line([0, -200], %)\n |> line([-200, 0], %)\n |> lineTo([profileStartX(%), profileStartY(%)], %)\n |> close(%)\n\nconst triangleSketch = startSketchOn(offsetPlane('XY', 75))\n |> startProfileAt([0, 125], %)\n |> line([-15, -30], %)\n |> line([30, 0], %)\n |> lineTo([profileStartX(%), profileStartY(%)], %)\n |> close(%)\n\nloft([squareSketch, triangleSketch])", + "// Loft a square, a circle, and another circle.\nconst squareSketch = startSketchOn('XY')\n |> startProfileAt([-100, 200], %)\n |> line([200, 0], %)\n |> line([0, -200], %)\n |> line([-200, 0], %)\n |> lineTo([profileStartX(%), profileStartY(%)], %)\n |> close(%)\n\nconst circleSketch0 = startSketchOn(offsetPlane('XY', 75))\n |> circle({ center: [0, 100], radius: 50 }, %)\n\nconst circleSketch1 = startSketchOn(offsetPlane('XY', 150))\n |> circle({ center: [0, 100], radius: 20 }, %)\n\nloft([\n squareSketch,\n circleSketch0,\n circleSketch1\n])", + "// Loft a square, a circle, and another circle with options.\nconst squareSketch = startSketchOn('XY')\n |> startProfileAt([-100, 200], %)\n |> line([200, 0], %)\n |> line([0, -200], %)\n |> line([-200, 0], %)\n |> lineTo([profileStartX(%), profileStartY(%)], %)\n |> close(%)\n\nconst circleSketch0 = startSketchOn(offsetPlane('XY', 75))\n |> circle({ center: [0, 100], radius: 50 }, %)\n\nconst circleSketch1 = startSketchOn(offsetPlane('XY', 150))\n |> circle({ center: [0, 100], radius: 20 }, %)\n\nloft([\n squareSketch,\n circleSketch0,\n circleSketch1\n], {\n // This can be set to override the automatically determined\n // topological base curve, which is usually the first section encountered.\n baseCurveIndex: 0,\n // Attempt to approximate rational curves (such as arcs) using a bezier.\n // This will remove banding around interpolations between arcs and non-arcs.\n // It may produce errors in other scenarios Over time, this field won't be necessary.\n bezApproximateRational: false,\n // Tolerance for the loft operation.\n tolerance: 0.000001,\n // Degree of the interpolation. Must be greater than zero.\n // For example, use 2 for quadratic, or 3 for cubic interpolation in\n // the V direction. This defaults to 2, if not specified.\n vDegree: 2\n})" + ] + }, + { + "name": "log", + "summary": "Compute the logarithm of the number with respect to an arbitrary base.", + "description": "The result might not be correctly rounded owing to implementation details; `log2()` can produce more accurate results for base 2, and `log10()` can produce more accurate results for base 10.", + "tags": [ + "math" + ], + "args": [ + { + "name": "num", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "base", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> line([log(100, 5), 0], %)\n |> line([5, 8], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" + ] + }, + { + "name": "log10", + "summary": "Compute the base 10 logarithm of the number.", + "description": "", + "tags": [ + "math" + ], + "args": [ + { + "name": "num", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> line([log10(100), 0], %)\n |> line([5, 8], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" + ] + }, + { + "name": "log2", + "summary": "Compute the base 2 logarithm of the number.", + "description": "", + "tags": [ + "math" + ], + "args": [ + { + "name": "num", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> line([log2(100), 0], %)\n |> line([5, 8], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" + ] + }, + { + "name": "m", + "summary": "Meters conversion factor for current projects units.", + "description": "No matter what units the current project uses, this function will always return the conversion factor to meters.\nFor example, if the current project uses inches, this function will return `39.3701`. If the current project uses millimeters, this function will return `1000`. If the current project uses meters, this function will return `1`.\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function.\nWe merely provide these functions for convenience and readability, as `10 * m()` is more readable that your intent is \"I want 10 meters\" than `10 * 1000`, if the project settings are in millimeters.", + "tags": [ + "units" + ], + "args": [], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const totalWidth = 10 * m()" + ] + }, + { + "name": "max", + "summary": "Compute the maximum of the given arguments.", + "description": "", + "tags": [ + "math" + ], + "args": [ + { + "name": "args", + "type": "[number]", + "schema": { + "type": "array", + "items": { + "type": "number", + "format": "double" + } + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle: 70,\n length: max(15, 31, 4, 13, 22)\n }, %)\n |> line([20, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" + ] + }, + { + "name": "min", + "summary": "Compute the minimum of the given arguments.", + "description": "", + "tags": [ + "math" + ], + "args": [ + { + "name": "args", + "type": "[number]", + "schema": { + "type": "array", + "items": { + "type": "number", + "format": "double" + } + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle: 70,\n length: min(15, 31, 4, 13, 22)\n }, %)\n |> line([20, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" + ] + }, + { + "name": "mirror2d", + "summary": "Mirror a sketch.", + "description": "Only works on unclosed sketches for now.\nMirror occurs around a local sketch axis rather than a global axis.", + "tags": [], + "args": [ + { + "name": "data", + "type": "Mirror2dData", + "schema": { + "description": "Data for a mirror.", + "type": "object", + "required": [ + "axis" + ], + "properties": { + "axis": { + "description": "Axis to use as mirror.", + "anyOf": [ + { + "description": "Axis and origin.", + "oneOf": [ + { + "description": "X-axis.", + "type": "string", + "enum": [ + "X" + ] + }, + { + "description": "Y-axis.", + "type": "string", + "enum": [ + "Y" + ] + }, + { + "description": "Flip the X-axis.", + "type": "string", + "enum": [ + "-X" + ] + }, + { + "description": "Flip the Y-axis.", + "type": "string", + "enum": [ + "-Y" + ] }, { - "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" + "custom" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "custom": { "type": "object", "required": [ - "id", - "sourceRange" + "axis", + "origin" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", + "axis": { + "description": "The axis.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + }, + "origin": { + "description": "The origin.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "maxItems": 2, + "minItems": 2 } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] + } } - } + }, + "additionalProperties": false + } + ] + }, + { + "description": "Tagged edge.", + "anyOf": [ + { + "description": "A uuid of an edge.", + "type": "string", + "format": "uuid" }, { - "description": "a complete arc", + "description": "A tag of an edge.", "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" + "__meta", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ "id", - "sourceRange" + "sketch" ], "properties": { "id": { - "description": "The id of the geometry.", + "description": "The id of the tagged object.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true }, - "value": { - "type": "string" + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", + "__meta": { "type": "array", "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + } + ] + } + ] + } + } + }, + "required": true + }, + { + "name": "sketch_set", + "type": "SketchSet", + "schema": { + "description": "A sketch or a group of sketches.", + "oneOf": [ + { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "sketch" + ] + }, + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } + "nullable": true }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "// Loft a square and a triangle.\nconst squareSketch = startSketchOn('XY')\n |> startProfileAt([-100, 200], %)\n |> line([200, 0], %)\n |> line([0, -200], %)\n |> line([-200, 0], %)\n |> lineTo([profileStartX(%), profileStartY(%)], %)\n |> close(%)\n\nconst triangleSketch = startSketchOn(offsetPlane('XY', 75))\n |> startProfileAt([0, 125], %)\n |> line([-15, -30], %)\n |> line([30, 0], %)\n |> lineTo([profileStartX(%), profileStartY(%)], %)\n |> close(%)\n\nloft([squareSketch, triangleSketch])", - "// Loft a square, a circle, and another circle.\nconst squareSketch = startSketchOn('XY')\n |> startProfileAt([-100, 200], %)\n |> line([200, 0], %)\n |> line([0, -200], %)\n |> line([-200, 0], %)\n |> lineTo([profileStartX(%), profileStartY(%)], %)\n |> close(%)\n\nconst circleSketch0 = startSketchOn(offsetPlane('XY', 75))\n |> circle({ center: [0, 100], radius: 50 }, %)\n\nconst circleSketch1 = startSketchOn(offsetPlane('XY', 150))\n |> circle({ center: [0, 100], radius: 20 }, %)\n\nloft([\n squareSketch,\n circleSketch0,\n circleSketch1\n])", - "// Loft a square, a circle, and another circle with options.\nconst squareSketch = startSketchOn('XY')\n |> startProfileAt([-100, 200], %)\n |> line([200, 0], %)\n |> line([0, -200], %)\n |> line([-200, 0], %)\n |> lineTo([profileStartX(%), profileStartY(%)], %)\n |> close(%)\n\nconst circleSketch0 = startSketchOn(offsetPlane('XY', 75))\n |> circle({ center: [0, 100], radius: 50 }, %)\n\nconst circleSketch1 = startSketchOn(offsetPlane('XY', 150))\n |> circle({ center: [0, 100], radius: 20 }, %)\n\nloft([\n squareSketch,\n circleSketch0,\n circleSketch1\n], {\n // This can be set to override the automatically determined\n // topological base curve, which is usually the first section encountered.\n baseCurveIndex: 0,\n // Attempt to approximate rational curves (such as arcs) using a bezier.\n // This will remove banding around interpolations between arcs and non-arcs.\n // It may produce errors in other scenarios Over time, this field won't be necessary.\n bezApproximateRational: false,\n // Tolerance for the loft operation.\n tolerance: 0.000001,\n // Degree of the interpolation. Must be greater than zero.\n // For example, use 2 for quadratic, or 3 for cubic interpolation in\n // the V direction. This defaults to 2, if not specified.\n vDegree: 2\n})" - ] - }, - { - "name": "log", - "summary": "Compute the logarithm of the number with respect to an arbitrary base.", - "description": "The result might not be correctly rounded owing to implementation details; `log2()` can produce more accurate results for base 2, and `log10()` can produce more accurate results for base 10.", - "tags": [ - "math" - ], - "args": [ - { - "name": "num", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "base", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> line([log(100, 5), 0], %)\n |> line([5, 8], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "log10", - "summary": "Compute the base 10 logarithm of the number.", - "description": "", - "tags": [ - "math" - ], - "args": [ - { - "name": "num", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> line([log10(100), 0], %)\n |> line([5, 8], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "log2", - "summary": "Compute the base 2 logarithm of the number.", - "description": "", - "tags": [ - "math" - ], - "args": [ - { - "name": "num", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> line([log2(100), 0], %)\n |> line([5, 8], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "m", - "summary": "Meters conversion factor for current projects units.", - "description": "No matter what units the current project uses, this function will always return the conversion factor to meters.\nFor example, if the current project uses inches, this function will return `39.3701`. If the current project uses millimeters, this function will return `1000`. If the current project uses meters, this function will return `1`.\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function.\nWe merely provide these functions for convenience and readability, as `10 * m()` is more readable that your intent is \"I want 10 meters\" than `10 * 1000`, if the project settings are in millimeters.", - "tags": [ - "units" - ], - "args": [], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const totalWidth = 10 * m()" - ] - }, - { - "name": "max", - "summary": "Compute the maximum of the given arguments.", - "description": "", - "tags": [ - "math" - ], - "args": [ - { - "name": "args", - "type": "[number]", - "schema": { - "type": "array", - "items": { - "type": "number", - "format": "double" - } - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle: 70,\n length: max(15, 31, 4, 13, 22)\n }, %)\n |> line([20, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "min", - "summary": "Compute the minimum of the given arguments.", - "description": "", - "tags": [ - "math" - ], - "args": [ - { - "name": "args", - "type": "[number]", - "schema": { - "type": "array", - "items": { - "type": "number", - "format": "double" - } - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle: 70,\n length: min(15, 31, 4, 13, 22)\n }, %)\n |> line([20, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "mirror2d", - "summary": "Mirror a sketch.", - "description": "Only works on unclosed sketches for now.\nMirror occurs around a local sketch axis rather than a global axis.", - "tags": [], - "args": [ - { - "name": "data", - "type": "Mirror2dData", - "schema": { - "description": "Data for a mirror.", - "type": "object", - "required": [ - "axis" - ], - "properties": { - "axis": { - "description": "Axis to use as mirror.", - "anyOf": [ - { - "description": "Axis and origin.", - "oneOf": [ - { - "description": "X-axis.", - "type": "string", - "enum": [ - "X" - ] - }, - { - "description": "Y-axis.", - "type": "string", - "enum": [ - "Y" - ] - }, - { - "description": "Flip the X-axis.", - "type": "string", - "enum": [ - "-X" - ] - }, - { - "description": "Flip the Y-axis.", - "type": "string", - "enum": [ - "-Y" - ] - }, - { - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "object", - "required": [ - "axis", - "origin" - ], - "properties": { - "axis": { - "description": "The axis.", - "type": "array", - "items": { - "type": "number", - "format": "double" + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "origin": { - "description": "The origin.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } }, - "additionalProperties": false - } - ] - }, - { - "description": "Tagged edge.", - "anyOf": [ - { - "description": "A uuid of an edge.", - "type": "string", - "format": "uuid" - }, - { - "description": "A tag of an edge.", - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -164735,488 +165875,111 @@ } } } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true + "maxItems": 2, + "minItems": 2 + } } - }, - "nullable": true - }, - "value": { - "type": "string" + } } } - } - ] - } - ] - } - } - }, - "required": true - }, - { - "name": "sketch_set", - "type": "SketchSet", - "schema": { - "description": "A sketch or a group of sketches.", - "oneOf": [ - { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "type", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -165234,34 +165997,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -165285,32 +166051,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -165379,23 +166119,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -165418,12 +166142,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -165435,61 +166254,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -165497,6 +166295,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -165507,56 +166318,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -165564,6 +166445,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -165574,50 +166468,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -165629,592 +166579,11 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, "value": { "description": "The paths in the sketch.", "type": "array", @@ -166231,31 +166600,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -166267,6 +166616,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -166276,63 +166635,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -166358,10 +166687,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -166373,6 +166718,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -166383,6 +166732,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -166392,63 +166751,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -166474,10 +166803,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -166489,6 +166834,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -166499,6 +166848,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -166508,64 +166867,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -166591,10 +166919,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -166606,6 +166951,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -166616,10 +166970,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -166630,62 +166989,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -166711,6 +167041,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -166722,6 +167076,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -166731,66 +167095,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -166816,6 +167147,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -166827,6 +167188,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -166836,73 +167207,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -166928,6 +167259,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -166939,6 +167288,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -166948,163 +167307,631 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "tag": { - "description": "The tag.", + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true }, - "value": { - "type": "string" + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, - { - "description": "An extruded arc.", + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -167115,84 +167942,66 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } - }, + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -167200,74 +168009,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -167275,122 +168076,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -167407,32 +168170,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -167443,6 +168180,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -167452,42 +168199,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -167501,28 +168264,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -167537,6 +168280,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -167546,32 +168294,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -167582,6 +168304,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -167591,51 +168323,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -167649,27 +168392,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -167679,38 +168412,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -167724,27 +168467,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -167754,38 +168487,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -167799,27 +168542,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -167829,38 +168562,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -167874,27 +168617,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -167904,38 +168637,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -167945,863 +168688,1000 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "type": { - "type": "string", - "enum": [ - "sketch" - ] - }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "type": [ + "object", + "array" + ], + "items": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { + "y": { + "description": "The y coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ { - "description": "A path that is horizontal.", + "description": "A plane.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", + "__meta", + "id", + "origin", "type", - "x" + "value", + "xAxis", + "yAxis", + "zAxis" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", "type": "object", "required": [ - "id", - "sourceRange" + "x", + "y", + "z" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "x": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + "xAxis": { + "description": "What should the plane’s X axis be?", "type": "object", "required": [ - "end", - "start", - "value" + "x", + "y", + "z" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "x": { + "type": "number", + "format": "double" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "y": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" + "z": { + "type": "number", + "format": "double" } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] + } }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + "yAxis": { + "description": "What should the plane’s Y axis be?", "type": "object", "required": [ - "id", - "sourceRange" + "x", + "y", + "z" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "x": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + "zAxis": { + "description": "The z-axis (normal).", "type": "object", "required": [ - "end", - "start", - "value" + "x", + "y", + "z" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "x": { + "type": "number", + "format": "double" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "y": { + "type": "number", + "format": "double" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "z": { + "type": "number", + "format": "double" } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - { - "type": [ - "object", - "array" - ], - "items": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { "__meta": { "type": "array", "items": { @@ -168824,63 +169704,40 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ - "plane" + "face" ] }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] + "description": "The tag of the face.", + "type": "string" }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the face’s X axis be?", "type": "object", "required": [ "x", @@ -168903,7 +169760,7 @@ } }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the face’s Y axis be?", "type": "object", "required": [ "x", @@ -168947,50 +169804,6 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" }, "solid": { "description": "The solid the face is on.", @@ -169003,61 +169816,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -169065,66 +169857,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -169132,78 +169932,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -169212,27 +169987,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -169242,43 +170007,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -169287,27 +170062,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -169317,74 +170082,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -169392,74 +170195,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -169467,122 +170262,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -169599,32 +170356,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -169635,6 +170366,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -169644,46 +170385,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { @@ -169693,28 +170450,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -169729,6 +170466,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -169738,32 +170480,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -169774,6 +170490,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -169783,51 +170509,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -169841,27 +170578,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -169871,38 +170598,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -169916,27 +170653,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -169946,38 +170673,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -169991,27 +170728,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -170021,38 +170748,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -170066,27 +170803,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -170096,38 +170823,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -170137,883 +170874,303 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "sketches" + ] + } + } + } + ] + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "[Sketch]", + "schema": { + "type": "array", + "items": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } + "maxItems": 2, + "minItems": 2 } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sketches" - ] - } - } - } - ] - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "[Sketch]", - "schema": { - "type": "array", - "items": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -171027,155 +171184,337 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -171189,78 +171528,531 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -171268,66 +172060,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -171335,78 +172135,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -171415,27 +172190,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -171445,43 +172210,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -171490,27 +172265,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -171520,74 +172285,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -171595,74 +172398,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -171670,122 +172465,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -171802,32 +172559,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -171838,6 +172569,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -171847,42 +172588,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -171896,28 +172653,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -171932,6 +172669,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -171941,32 +172683,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -171977,6 +172693,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -171986,51 +172712,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -172044,27 +172781,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -172074,38 +172801,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -172119,27 +172856,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -172149,38 +172876,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -172194,27 +172931,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -172224,38 +172951,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -172269,27 +173006,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -172299,38 +173026,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -172340,1043 +173077,306 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "// Mirror an un-closed sketch across the Y axis.\nconst sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 10], %)\n |> line([15, 0], %)\n |> line([-7, -3], %)\n |> line([9, -1], %)\n |> line([-8, -5], %)\n |> line([9, -3], %)\n |> line([-8, -3], %)\n |> line([9, -1], %)\n |> line([-19, -0], %)\n |> mirror2d({ axis: 'Y' }, %)\n\nconst example = extrude(10, sketch001)", + "// Mirror a un-closed sketch across the Y axis.\nconst sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 8.5], %)\n |> line([20, -8.5], %)\n |> line([-20, -8.5], %)\n |> mirror2d({ axis: 'Y' }, %)\n\nconst example = extrude(10, sketch001)", + "// Mirror a un-closed sketch across an edge.\nconst helper001 = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([0, 10], %, $edge001)\n\nconst sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 8.5], %)\n |> line([20, -8.5], %)\n |> line([-20, -8.5], %)\n |> mirror2d({ axis: edge001 }, %)\n\nconst example = extrude(10, sketch001)", + "// Mirror an un-closed sketch across a custom axis.\nconst sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 8.5], %)\n |> line([20, -8.5], %)\n |> line([-20, -8.5], %)\n |> mirror2d({\n axis: {\n custom: { axis: [0.0, 1.0], origin: [0.0, 0.0] }\n }\n }, %)\n\nconst example = extrude(10, sketch001)" + ] + }, + { + "name": "mm", + "summary": "Millimeters conversion factor for current projects units.", + "description": "No matter what units the current project uses, this function will always return the conversion factor to millimeters.\nFor example, if the current project uses inches, this function will return `(1/25.4)`. If the current project uses millimeters, this function will return `1`.\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function.\nWe merely provide these functions for convenience and readability, as `10 * mm()` is more readable that your intent is \"I want 10 millimeters\" than `10 * (1/25.4)`, if the project settings are in inches.", + "tags": [ + "units" + ], + "args": [], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const totalWidth = 10 * mm()" + ] + }, + { + "name": "offsetPlane", + "summary": "Offset a plane by a distance along its normal.", + "description": "For example, if you offset the 'XZ' plane by 10, the new plane will be parallel to the 'XZ' plane and 10 units away from it.", + "tags": [], + "args": [ + { + "name": "std_plane", + "type": "StandardPlane", + "schema": { + "description": "One of the standard planes.", + "oneOf": [ + { + "description": "The XY plane.", + "type": "string", + "enum": [ + "XY" + ] + }, + { + "description": "The opposite side of the XY plane.", + "type": "string", + "enum": [ + "-XY" + ] + }, + { + "description": "The XZ plane.", + "type": "string", + "enum": [ + "XZ" + ] + }, + { + "description": "The opposite side of the XZ plane.", + "type": "string", + "enum": [ + "-XZ" + ] + }, + { + "description": "The YZ plane.", + "type": "string", + "enum": [ + "YZ" + ] + }, + { + "description": "The opposite side of the YZ plane.", + "type": "string", + "enum": [ + "-YZ" + ] + } + ] + }, + "required": true + }, + { + "name": "offset", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "PlaneData", + "schema": { + "description": "Data for a plane.", + "oneOf": [ + { + "description": "The XY plane.", + "type": "string", + "enum": [ + "XY" + ] + }, + { + "description": "The opposite side of the XY plane.", + "type": "string", + "enum": [ + "-XY" + ] + }, + { + "description": "The XZ plane.", + "type": "string", + "enum": [ + "XZ" + ] + }, + { + "description": "The opposite side of the XZ plane.", + "type": "string", + "enum": [ + "-XZ" + ] + }, + { + "description": "The YZ plane.", + "type": "string", + "enum": [ + "YZ" + ] + }, + { + "description": "The opposite side of the YZ plane.", + "type": "string", + "enum": [ + "-YZ" + ] + }, + { + "description": "A defined plane.", + "type": "object", + "required": [ + "plane" + ], + "properties": { + "plane": { + "type": "object", + "required": [ + "origin", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "origin": { + "description": "Origin of the plane.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "x", + "y", + "z" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "x": { + "type": "number", + "format": "double" }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "y": { + "type": "number", + "format": "double" }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "z": { + "type": "number", + "format": "double" } } }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", + "xAxis": { + "description": "What should the plane’s X axis be?", "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" + "x", + "y", + "z" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "x": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "y": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "y": { + "type": "number", + "format": "double" }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] + "z": { + "type": "number", + "format": "double" } } }, - { - "description": "A arc that is tangential to the last path segment", + "zAxis": { + "description": "The z-axis (normal).", "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" + "x", + "y", + "z" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "// Mirror an un-closed sketch across the Y axis.\nconst sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 10], %)\n |> line([15, 0], %)\n |> line([-7, -3], %)\n |> line([9, -1], %)\n |> line([-8, -5], %)\n |> line([9, -3], %)\n |> line([-8, -3], %)\n |> line([9, -1], %)\n |> line([-19, -0], %)\n |> mirror2d({ axis: 'Y' }, %)\n\nconst example = extrude(10, sketch001)", - "// Mirror a un-closed sketch across the Y axis.\nconst sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 8.5], %)\n |> line([20, -8.5], %)\n |> line([-20, -8.5], %)\n |> mirror2d({ axis: 'Y' }, %)\n\nconst example = extrude(10, sketch001)", - "// Mirror a un-closed sketch across an edge.\nconst helper001 = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([0, 10], %, $edge001)\n\nconst sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 8.5], %)\n |> line([20, -8.5], %)\n |> line([-20, -8.5], %)\n |> mirror2d({ axis: edge001 }, %)\n\nconst example = extrude(10, sketch001)", - "// Mirror an un-closed sketch across a custom axis.\nconst sketch001 = startSketchOn('XZ')\n |> startProfileAt([0, 8.5], %)\n |> line([20, -8.5], %)\n |> line([-20, -8.5], %)\n |> mirror2d({\n axis: {\n custom: { axis: [0.0, 1.0], origin: [0.0, 0.0] }\n }\n }, %)\n\nconst example = extrude(10, sketch001)" - ] - }, - { - "name": "mm", - "summary": "Millimeters conversion factor for current projects units.", - "description": "No matter what units the current project uses, this function will always return the conversion factor to millimeters.\nFor example, if the current project uses inches, this function will return `(1/25.4)`. If the current project uses millimeters, this function will return `1`.\n**Caution**: This function is only intended to be used when you absolutely MUST have different units in your code than the project settings. Otherwise, it is a bad pattern to use this function.\nWe merely provide these functions for convenience and readability, as `10 * mm()` is more readable that your intent is \"I want 10 millimeters\" than `10 * (1/25.4)`, if the project settings are in inches.", - "tags": [ - "units" - ], - "args": [], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const totalWidth = 10 * mm()" - ] - }, - { - "name": "offsetPlane", - "summary": "Offset a plane by a distance along its normal.", - "description": "For example, if you offset the 'XZ' plane by 10, the new plane will be parallel to the 'XZ' plane and 10 units away from it.", - "tags": [], - "args": [ - { - "name": "std_plane", - "type": "StandardPlane", - "schema": { - "description": "One of the standard planes.", - "oneOf": [ - { - "description": "The XY plane.", - "type": "string", - "enum": [ - "XY" - ] - }, - { - "description": "The opposite side of the XY plane.", - "type": "string", - "enum": [ - "-XY" - ] - }, - { - "description": "The XZ plane.", - "type": "string", - "enum": [ - "XZ" - ] - }, - { - "description": "The opposite side of the XZ plane.", - "type": "string", - "enum": [ - "-XZ" - ] - }, - { - "description": "The YZ plane.", - "type": "string", - "enum": [ - "YZ" - ] - }, - { - "description": "The opposite side of the YZ plane.", - "type": "string", - "enum": [ - "-YZ" - ] - } - ] - }, - "required": true - }, - { - "name": "offset", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "PlaneData", - "schema": { - "description": "Data for a plane.", - "oneOf": [ - { - "description": "The XY plane.", - "type": "string", - "enum": [ - "XY" - ] - }, - { - "description": "The opposite side of the XY plane.", - "type": "string", - "enum": [ - "-XY" - ] - }, - { - "description": "The XZ plane.", - "type": "string", - "enum": [ - "XZ" - ] - }, - { - "description": "The opposite side of the XZ plane.", - "type": "string", - "enum": [ - "-XZ" - ] - }, - { - "description": "The YZ plane.", - "type": "string", - "enum": [ - "YZ" - ] - }, - { - "description": "The opposite side of the YZ plane.", - "type": "string", - "enum": [ - "-YZ" - ] - }, - { - "description": "A defined plane.", - "type": "object", - "required": [ - "plane" - ], - "properties": { - "plane": { - "type": "object", - "required": [ - "origin", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" + "x": { + "type": "number", + "format": "double" }, "y": { "type": "number", @@ -173425,10 +173425,11 @@ "rotateDuplicates" ], "properties": { - "arcDegrees": { - "description": "The arc angle (in degrees) to place the repetitions. Must be greater than 0.", - "type": "number", - "format": "double" + "repetitions": { + "description": "The number of repetitions. Must be greater than 0. This excludes the original entity. For example, if `repetitions` is 1, the original entity will be copied once.", + "type": "integer", + "format": "uint32", + "minimum": 0.0 }, "center": { "description": "The center about which to make the pattern. This is a 2D vector.", @@ -173440,11 +173441,10 @@ "maxItems": 2, "minItems": 2 }, - "repetitions": { - "description": "The number of repetitions. Must be greater than 0. This excludes the original entity. For example, if `repetitions` is 1, the original entity will be copied once.", - "type": "integer", - "format": "uint32", - "minimum": 0.0 + "arcDegrees": { + "description": "The arc angle (in degrees) to place the repetitions. Must be greater than 0.", + "type": "number", + "format": "double" }, "rotateDuplicates": { "description": "Whether or not to rotate the duplicates as they are copied.", @@ -173472,61 +173472,108 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "sketch" + ] }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -173540,71 +173587,764 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { "type": "number", "format": "double" }, @@ -173663,23 +174403,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -173702,12 +174426,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -173719,61 +174538,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -173781,66 +174579,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -173848,81 +174654,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -173935,569 +174698,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -174515,31 +174884,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -174551,6 +174900,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -174560,63 +174919,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -174642,10 +174971,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -174657,6 +175002,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -174667,6 +175016,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -174676,63 +175035,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -174758,10 +175087,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -174773,6 +175118,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -174783,6 +175132,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -174792,64 +175151,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -174875,10 +175203,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -174890,6 +175235,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -174900,10 +175254,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -174914,62 +175273,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -174995,6 +175325,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -175006,6 +175360,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -175015,66 +175379,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -175100,6 +175431,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -175111,6 +175472,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -175120,73 +175491,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -175212,6 +175543,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -175223,6 +175572,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -175232,6 +175591,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -175242,91 +175614,678 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "value": { - "type": "string" + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -175334,74 +176293,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] } } }, { - "description": "An extruded arc.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -175409,156 +176360,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -175569,112 +176383,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -175691,32 +176454,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -175727,6 +176464,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -175736,42 +176483,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -175785,28 +176548,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -175821,6 +176564,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -175830,32 +176578,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -175866,6 +176588,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -175875,51 +176607,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -175933,27 +176676,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -175963,38 +176696,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -176008,27 +176751,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -176038,38 +176771,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -176083,27 +176826,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -176113,38 +176846,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -176158,27 +176901,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -176188,38 +176921,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -176229,872 +176972,524 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "type": { - "type": "string", - "enum": [ - "sketch" - ] - }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "type": [ + "object", + "array" + ], + "items": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - { - "type": [ - "object", - "array" - ], - "items": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -177108,41 +177503,357 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -177163,6 +177874,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -177231,23 +177965,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -177270,12 +177988,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -177287,61 +178100,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -177349,66 +178141,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -177416,78 +178216,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -177496,27 +178271,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -177526,43 +178291,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -177571,27 +178346,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -177601,74 +178366,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -177676,74 +178479,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -177751,122 +178546,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -177883,32 +178640,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -177919,6 +178650,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -177928,42 +178669,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -177977,28 +178734,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -178013,6 +178750,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -178022,32 +178764,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -178058,6 +178774,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -178067,51 +178793,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -178125,27 +178862,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -178155,38 +178882,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -178200,27 +178937,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -178230,38 +178957,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -178275,27 +179012,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -178305,38 +179032,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -178350,27 +179087,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -178380,38 +179107,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -178421,883 +179158,303 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "sketches" + ] + } + } + } + ] + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "[Sketch]", + "schema": { + "type": "array", + "items": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sketches" - ] - } - } - } - ] - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "[Sketch]", - "schema": { - "type": "array", - "items": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -179311,155 +179468,231 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -179473,216 +179706,608 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - "endCapId": { - "description": "The id of the extrusion end cap", + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { "type": "string", - "format": "uuid", - "nullable": true + "enum": [ + "XY", + "XZ", + "YZ" + ] }, - "height": { - "description": "The height of the solid.", + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { "type": "number", "format": "double" }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, "value": { "description": "The extrude surfaces.", "type": "array", @@ -179699,27 +180324,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -179729,38 +180344,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -179774,27 +180399,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -179804,38 +180419,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -179849,27 +180474,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -179879,38 +180494,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -179924,27 +180549,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -179954,122 +180569,264 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" }, - "y": { - "type": "number", - "format": "double" + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "height": { + "description": "The height of the solid.", "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true }, - "z": { - "type": "number", - "format": "double" + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -180086,32 +180843,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -180122,6 +180853,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -180131,42 +180872,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -180180,28 +180937,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -180216,6 +180953,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -180225,32 +180967,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -180261,6 +180977,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -180270,51 +180996,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -180328,27 +181065,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -180358,38 +181085,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -180403,27 +181140,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -180433,38 +181160,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -180478,27 +181215,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -180508,38 +181235,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -180553,27 +181290,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -180583,38 +181310,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -180624,36 +181361,218 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([.5, 25], %)\n |> line([0, 5], %)\n |> line([-1, 0], %)\n |> line([0, -5], %)\n |> close(%)\n |> patternCircular2d({\n center: [0, 0],\n repetitions: 12,\n arcDegrees: 360,\n rotateDuplicates: true\n }, %)\n\nconst example = extrude(1, exampleSketch)" + ] + }, + { + "name": "patternCircular3d", + "summary": "Repeat a 3-dimensional solid some number of times along a partial or", + "description": "complete circle some specified number of times. Each object may additionally be rotated along the circle, ensuring orentation of the solid with respect to the center of the circle is maintained.", + "tags": [], + "args": [ + { + "name": "data", + "type": "CircularPattern3dData", + "schema": { + "description": "Data for a circular pattern on a 3D model.", + "type": "object", + "required": [ + "arcDegrees", + "axis", + "center", + "repetitions", + "rotateDuplicates" + ], + "properties": { + "repetitions": { + "description": "The number of repetitions. Must be greater than 0. This excludes the original entity. For example, if `repetitions` is 1, the original entity will be copied once.", + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "axis": { + "description": "The axis around which to make the pattern. This is a 3D vector.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 3, + "minItems": 3 + }, + "center": { + "description": "The center about which to make the pattern. This is a 3D vector.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 3, + "minItems": 3 + }, + "arcDegrees": { + "description": "The arc angle (in degrees) to place the repetitions. Must be greater than 0.", + "type": "number", + "format": "double" + }, + "rotateDuplicates": { + "description": "Whether or not to rotate the duplicates as they are copied.", + "type": "boolean" + } + } + }, + "required": true + }, + { + "name": "solid_set", + "type": "SolidSet", + "schema": { + "description": "A solid or a group of solids.", + "oneOf": [ + { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "solid" + ] + }, + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", "type": "object", "required": [ + "faceId", "id", - "sourceRange" + "sourceRange", + "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "id": { "description": "The id of the geometry.", "type": "string", @@ -180672,334 +181591,74 @@ } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + { + "description": "An extruded arc.", "type": "object", "required": [ - "end", - "start", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "digest": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", + "format": "uint", "minimum": 0.0 }, "maxItems": 2, @@ -181007,325 +181666,63 @@ } } }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + { + "description": "Geometry metadata.", "type": "object", "required": [ + "faceId", "id", - "sourceRange" + "sourceRange", + "type" ], "properties": { - "id": { - "description": "The id of the geometry.", + "type": { "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "enum": [ + "chamfer" + ] }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 32, - "minItems": 32, "nullable": true }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { "id": { "description": "The id of the geometry.", "type": "string", @@ -181344,216 +181741,29 @@ } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([.5, 25], %)\n |> line([0, 5], %)\n |> line([-1, 0], %)\n |> line([0, -5], %)\n |> close(%)\n |> patternCircular2d({\n center: [0, 0],\n repetitions: 12,\n arcDegrees: 360,\n rotateDuplicates: true\n }, %)\n\nconst example = extrude(1, exampleSketch)" - ] - }, - { - "name": "patternCircular3d", - "summary": "Repeat a 3-dimensional solid some number of times along a partial or", - "description": "complete circle some specified number of times. Each object may additionally be rotated along the circle, ensuring orentation of the solid with respect to the center of the circle is maintained.", - "tags": [], - "args": [ - { - "name": "data", - "type": "CircularPattern3dData", - "schema": { - "description": "Data for a circular pattern on a 3D model.", - "type": "object", - "required": [ - "arcDegrees", - "axis", - "center", - "repetitions", - "rotateDuplicates" - ], - "properties": { - "arcDegrees": { - "description": "The arc angle (in degrees) to place the repetitions. Must be greater than 0.", - "type": "number", - "format": "double" - }, - "axis": { - "description": "The axis around which to make the pattern. This is a 3D vector.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 3, - "minItems": 3 - }, - "center": { - "description": "The center about which to make the pattern. This is a 3D vector.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 3, - "minItems": 3 - }, - "repetitions": { - "description": "The number of repetitions. Must be greater than 0. This excludes the original entity. For example, if `repetitions` is 1, the original entity will be copied once.", - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "rotateDuplicates": { - "description": "Whether or not to rotate the duplicates as they are copied.", - "type": "boolean" - } - } - }, - "required": true - }, - { - "name": "solid_set", - "type": "SolidSet", - "schema": { - "description": "A solid or a group of solids.", - "oneOf": [ - { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "type", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ { - "description": "A fillet.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -181561,73 +181771,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -181638,50 +181794,31 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -181693,109 +181830,820 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -181816,6 +182664,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -181884,23 +182755,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -181923,12 +182778,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -181940,61 +182890,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -182002,66 +182931,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -182069,78 +183006,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -182149,27 +183061,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -182179,43 +183081,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -182224,27 +183136,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -182254,74 +183156,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -182329,74 +183269,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -182404,122 +183336,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -182536,32 +183430,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -182572,6 +183440,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -182581,42 +183459,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -182630,28 +183524,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -182666,6 +183540,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -182675,32 +183554,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -182711,6 +183564,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -182720,51 +183583,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -182778,27 +183652,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -182808,38 +183672,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -182853,27 +183727,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -182883,38 +183747,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -182928,27 +183802,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -182958,38 +183822,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -183003,27 +183877,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -183033,887 +183897,163 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" } - } + }, + "nullable": true }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 2, + "minItems": 2 } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "type": { + "endCapId": { + "description": "The id of the extrusion end cap", "type": "string", - "enum": [ - "solid" - ] + "format": "uuid", + "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -183921,81 +184061,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -184006,64 +184084,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -184071,81 +184128,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -184156,33 +184151,38 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, @@ -184202,61 +184202,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -184264,6 +184243,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -184274,56 +184266,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -184331,6 +184393,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -184341,50 +184416,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -184396,61 +184527,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -184464,155 +184636,225 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -184626,77 +184868,573 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "$ref": "#/components/schemas/Solid" - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", "y", "z" ], @@ -184714,46 +185452,170 @@ "format": "double" } } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - } - ] - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + }, + { + "description": "A face.", "type": "object", "required": [ + "__meta", "id", - "sourceRange" + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" ], "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, "id": { - "description": "The id of the geometry.", + "description": "The id of the face.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "$ref": "#/components/schemas/Solid" + }, + "__meta": { "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, + } + ] + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { "from": { "description": "The from point.", "type": "array", @@ -184764,6 +185626,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -184773,42 +185645,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -184822,28 +185710,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -184858,6 +185726,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -184867,32 +185740,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -184903,6 +185750,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -184912,51 +185769,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -184970,27 +185838,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -185000,38 +185858,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -185045,27 +185913,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -185075,38 +185933,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -185120,27 +185988,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -185150,38 +186008,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -185195,27 +186063,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -185225,38 +186083,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -185266,840 +186134,112 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 2, + "minItems": 2 } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -186107,81 +186247,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -186192,64 +186270,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -186257,81 +186314,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -186342,33 +186337,38 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, @@ -186405,61 +186405,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -186467,6 +186446,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -186477,56 +186469,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -186534,6 +186596,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -186544,50 +186619,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -186599,61 +186730,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -186667,155 +186839,225 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -186829,73 +187071,569 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "$ref": "#/components/schemas/Solid" - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { "description": "The z-axis (normal).", "type": "object", "required": [ @@ -186917,46 +187655,170 @@ "format": "double" } } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - } - ] - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + }, + { + "description": "A face.", "type": "object", "required": [ + "__meta", "id", - "sourceRange" + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" ], "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, "id": { - "description": "The id of the geometry.", + "description": "The id of the face.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "$ref": "#/components/schemas/Solid" + }, + "__meta": { "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, + } + ] + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { "from": { "description": "The from point.", "type": "array", @@ -186967,6 +187829,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -186976,42 +187848,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -187025,28 +187913,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -187061,6 +187929,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -187070,32 +187943,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -187106,6 +187953,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -187115,51 +187972,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -187173,27 +188041,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -187203,38 +188061,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -187248,27 +188116,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -187278,38 +188136,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -187323,27 +188191,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -187353,38 +188211,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -187398,27 +188266,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -187428,38 +188286,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -187469,11 +188337,324 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true } } } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> circle({ center: [0, 0], radius: 1 }, %)\n\nconst example = extrude(-5, exampleSketch)\n |> patternCircular3d({\n axis: [1, -1, 0],\n center: [10, -20, 0],\n repetitions: 10,\n arcDegrees: 360,\n rotateDuplicates: true\n }, %)" + ] + }, + { + "name": "patternLinear2d", + "summary": "Repeat a 2-dimensional sketch along some dimension, with a dynamic amount", + "description": "of distance between each repetition, some specified number of times.", + "tags": [], + "args": [ + { + "name": "data", + "type": "LinearPattern2dData", + "schema": { + "description": "Data for a linear pattern on a 2D sketch.", + "type": "object", + "required": [ + "axis", + "distance", + "repetitions" + ], + "properties": { + "repetitions": { + "description": "The number of repetitions. Must be greater than 0. This excludes the original entity. For example, if `repetitions` is 1, the original entity will be copied once.", + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "distance": { + "description": "The distance between each repetition. This can also be referred to as spacing.", + "type": "number", + "format": "double" + }, + "axis": { + "description": "The axis of the pattern. This is a 2D vector.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + "required": true + }, + { + "name": "sketch_set", + "type": "SketchSet", + "schema": { + "description": "A sketch or a group of sketches.", + "oneOf": [ + { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "sketch" + ] + }, + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -187491,31 +188672,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -187527,6 +188688,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -187536,63 +188707,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -187618,10 +188759,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -187633,6 +188790,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -187643,6 +188804,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -187652,63 +188823,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -187734,10 +188875,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -187749,6 +188906,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -187759,6 +188920,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -187768,64 +188939,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -187851,10 +188991,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -187866,6 +189023,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -187876,10 +189042,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -187890,62 +189061,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -187971,6 +189113,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -187982,6 +189148,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -187991,66 +189167,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -188076,6 +189219,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -188087,6 +189260,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -188096,73 +189279,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -188188,6 +189331,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -188199,6 +189360,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -188208,471 +189379,63 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> circle({ center: [0, 0], radius: 1 }, %)\n\nconst example = extrude(-5, exampleSketch)\n |> patternCircular3d({\n axis: [1, -1, 0],\n center: [10, -20, 0],\n repetitions: 10,\n arcDegrees: 360,\n rotateDuplicates: true\n }, %)" - ] - }, - { - "name": "patternLinear2d", - "summary": "Repeat a 2-dimensional sketch along some dimension, with a dynamic amount", - "description": "of distance between each repetition, some specified number of times.", - "tags": [], - "args": [ - { - "name": "data", - "type": "LinearPattern2dData", - "schema": { - "description": "Data for a linear pattern on a 2D sketch.", - "type": "object", - "required": [ - "axis", - "distance", - "repetitions" - ], - "properties": { - "axis": { - "description": "The axis of the pattern. This is a 2D vector.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "distance": { - "description": "The distance between each repetition. This can also be referred to as spacing.", - "type": "number", - "format": "double" - }, - "repetitions": { - "description": "The number of repetitions. Must be greater than 0. This excludes the original entity. For example, if `repetitions` is 1, the original entity will be copied once.", - "type": "integer", - "format": "uint32", - "minimum": 0.0 - } - } - }, - "required": true - }, - { - "name": "sketch_set", - "type": "SketchSet", - "schema": { - "description": "A sketch or a group of sketches.", - "oneOf": [ - { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "type", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" }, "on": { "description": "What the sketch is on (can be a plane or a face).", @@ -188691,34 +189454,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -188742,32 +189508,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -188836,23 +189576,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -188875,12 +189599,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -188892,61 +189711,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -188954,6 +189752,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -188964,56 +189775,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -189021,6 +189902,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -189031,50 +189925,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -189086,608 +190036,89 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "path": { - "description": "The path the tag is on.", + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -189713,6 +190144,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -189724,6 +190189,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -189733,63 +190208,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -189815,10 +190260,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -189830,6 +190291,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -189840,6 +190305,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -189849,63 +190324,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -189931,10 +190376,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -189946,6 +190408,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -189956,6 +190427,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -189965,64 +190446,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -190048,13 +190498,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -190063,8 +190533,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -190073,11 +190543,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -190087,62 +190552,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -190168,6 +190604,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -190179,6 +190645,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -190188,66 +190664,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -190273,6 +190716,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -190284,6 +190745,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -190293,73 +190764,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -190385,121 +190816,649 @@ "minItems": 2 } } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -190507,81 +191466,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -190592,64 +191489,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -190657,81 +191533,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -190742,112 +191556,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -190864,32 +191627,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -190900,6 +191637,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -190909,42 +191656,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -190958,28 +191721,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -190994,6 +191737,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -191003,32 +191751,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -191039,6 +191761,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -191048,51 +191780,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -191106,27 +191849,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -191136,38 +191869,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -191181,27 +191924,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -191211,38 +191944,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -191256,27 +191999,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -191286,38 +192019,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -191331,27 +192074,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -191361,38 +192094,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -191402,846 +192145,860 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "type": { - "type": "string", - "enum": [ - "sketch" - ] - }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "type": [ + "object", + "array" + ], + "items": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - } - ] - } - } - } - }, - { - "type": [ - "object", - "array" - ], - "items": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -192259,36 +193016,39 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, - "origin": { - "description": "Origin of the plane.", + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", "type": "object", "required": [ "x", @@ -192310,32 +193070,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -192404,23 +193138,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -192443,12 +193161,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -192460,61 +193273,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -192522,66 +193314,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -192589,78 +193389,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -192669,27 +193444,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -192699,43 +193464,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -192744,27 +193519,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -192774,74 +193539,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -192849,74 +193652,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -192924,122 +193719,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -193056,32 +193813,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -193092,6 +193823,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -193101,42 +193842,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -193150,28 +193907,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -193186,6 +193923,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -193195,32 +193937,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -193231,6 +193947,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -193240,51 +193966,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -193298,27 +194035,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -193328,38 +194055,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -193373,27 +194110,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -193403,38 +194130,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -193448,27 +194185,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -193478,38 +194205,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -193523,27 +194260,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -193553,38 +194280,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -193594,883 +194331,647 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "sketches" + ] + } + } + } + ] + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "[Sketch]", + "schema": { + "type": "array", + "items": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } + "maxItems": 2, + "minItems": 2 } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } + "maxItems": 2, + "minItems": 2 } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } + "maxItems": 2, + "minItems": 2 } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } + "maxItems": 2, + "minItems": 2 } } - ] + } } - } - } - }, - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sketches" - ] - } - } - } - ] - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "[Sketch]", - "schema": { - "type": "array", - "items": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -194484,41 +194985,251 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -194539,6 +195250,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -194607,23 +195341,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -194646,78 +195364,152 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, - "solid": { - "description": "The solid the face is on.", + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", "type": "object", "required": [ - "__meta", - "height", - "id", - "sketch", - "value" + "x", + "y", + "z" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "x": { + "type": "number", + "format": "double" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -194725,66 +195517,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -194792,78 +195592,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -194872,27 +195647,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -194902,43 +195667,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -194947,27 +195722,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -194977,74 +195742,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -195052,74 +195855,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -195127,122 +195922,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -195259,32 +196016,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -195295,6 +196026,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -195304,42 +196045,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -195353,28 +196110,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -195389,6 +196126,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -195398,32 +196140,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -195434,6 +196150,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -195443,51 +196169,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -195501,27 +196238,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -195531,38 +196258,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -195576,27 +196313,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -195606,38 +196333,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -195651,27 +196388,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -195681,38 +196408,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -195726,27 +196463,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -195756,38 +196483,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -195797,138 +196534,202 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> circle({ center: [0, 0], radius: 1 }, %)\n |> patternLinear2d({\n axis: [1, 0],\n repetitions: 6,\n distance: 4\n }, %)\n\nconst example = extrude(1, exampleSketch)" + ] + }, + { + "name": "patternLinear3d", + "summary": "Repeat a 3-dimensional solid along a linear path, with a dynamic amount", + "description": "of distance between each repetition, some specified number of times.", + "tags": [], + "args": [ + { + "name": "data", + "type": "LinearPattern3dData", + "schema": { + "description": "Data for a linear pattern on a 3D model.", + "type": "object", + "required": [ + "axis", + "distance", + "repetitions" + ], + "properties": { + "repetitions": { + "description": "The number of repetitions. Must be greater than 0. This excludes the original entity. For example, if `repetitions` is 1, the original entity will be copied once.", + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "distance": { + "description": "The distance between each repetition. This can also be referred to as spacing.", + "type": "number", + "format": "double" + }, + "axis": { + "description": "The axis of the pattern.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 3, + "minItems": 3 + } + } + }, + "required": true + }, + { + "name": "solid_set", + "type": "SolidSet", + "schema": { + "description": "A solid or a group of solids.", + "oneOf": [ + { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "solid" + ] + }, + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", "type": "object", "required": [ + "faceId", "id", - "sourceRange" + "sourceRange", + "type" ], "properties": { - "id": { - "description": "The id of the geometry.", + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 32, - "minItems": 32, "nullable": true }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { "id": { "description": "The id of the geometry.", "type": "string", @@ -195947,221 +196748,63 @@ } } }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + { + "description": "An extruded arc.", "type": "object", "required": [ + "faceId", "id", - "sourceRange" + "sourceRange", + "type" ], "properties": { - "id": { - "description": "The id of the geometry.", + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 32, - "minItems": 32, "nullable": true }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { "id": { "description": "The id of the geometry.", "type": "string", @@ -196180,108 +196823,63 @@ } } }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", + { + "description": "Geometry metadata.", "type": "object", "required": [ - "end", - "start", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "type": { + "type": "string", + "enum": [ + "chamfer" + ] }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { "id": { "description": "The id of the geometry.", "type": "string", @@ -196300,93 +196898,63 @@ } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + { + "description": "Geometry metadata.", "type": "object", "required": [ - "end", - "start", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { "id": { "description": "The id of the geometry.", "type": "string", @@ -196404,441 +196972,10 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> circle({ center: [0, 0], radius: 1 }, %)\n |> patternLinear2d({\n axis: [1, 0],\n repetitions: 6,\n distance: 4\n }, %)\n\nconst example = extrude(1, exampleSketch)" - ] - }, - { - "name": "patternLinear3d", - "summary": "Repeat a 3-dimensional solid along a linear path, with a dynamic amount", - "description": "of distance between each repetition, some specified number of times.", - "tags": [], - "args": [ - { - "name": "data", - "type": "LinearPattern3dData", - "schema": { - "description": "Data for a linear pattern on a 3D model.", - "type": "object", - "required": [ - "axis", - "distance", - "repetitions" - ], - "properties": { - "axis": { - "description": "The axis of the pattern.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 3, - "minItems": 3 - }, - "distance": { - "description": "The distance between each repetition. This can also be referred to as spacing.", - "type": "number", - "format": "double" - }, - "repetitions": { - "description": "The number of repetitions. Must be greater than 0. This excludes the original entity. For example, if `repetitions` is 1, the original entity will be copied once.", - "type": "integer", - "format": "uint32", - "minimum": 0.0 - } - } - }, - "required": true - }, - { - "name": "solid_set", - "type": "SolidSet", - "schema": { - "description": "A solid or a group of solids.", - "oneOf": [ - { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "type", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -196850,61 +196987,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -196918,155 +197096,453 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -197080,78 +197556,531 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -197159,66 +198088,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -197226,78 +198163,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -197306,27 +198218,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -197336,43 +198238,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -197381,27 +198293,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -197411,74 +198313,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -197486,74 +198426,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -197561,122 +198493,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -197693,32 +198587,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -197729,6 +198597,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -197738,42 +198616,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -197787,28 +198681,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -197823,6 +198697,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -197832,32 +198711,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -197868,6 +198721,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -197877,51 +198740,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -197935,27 +198809,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -197965,38 +198829,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -198010,27 +198884,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -198040,38 +198904,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -198085,27 +198959,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -198115,38 +198979,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -198160,27 +199034,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -198190,38 +199054,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -198231,921 +199105,1696 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 32, + "minItems": 32, + "nullable": true } - } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "from": { - "description": "The from point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "type": [ + "object", + "array" + ], + "items": { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } + "maxItems": 2, + "minItems": 2 } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } + "maxItems": 2, + "minItems": 2 } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + } + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ - "AngledLineTo" + "plane" ] }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, { - "description": "A base path.", + "description": "A face.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", "type": "object", "required": [ - "id", - "sourceRange" + "x", + "y", + "z" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "x": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + "yAxis": { + "description": "What should the face’s Y axis be?", "type": "object", "required": [ - "end", - "start", - "value" + "x", + "y", + "z" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "x": { + "type": "number", + "format": "double" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "y": { + "type": "number", + "format": "double" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" } - }, - "nullable": true + } }, - "to": { - "description": "The to point.", + "solid": { + "description": "The solid the face is on.", + "$ref": "#/components/schemas/Solid" + }, + "__meta": { "type": "array", "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } ] - } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "solid" - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", + }, + "start": { + "description": "The starting path.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "__geoMeta", + "from", + "to" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", + "to": { + "description": "The to point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 }, "tag": { - "description": "The tag.", + "description": "The tag of the path.", "type": "object", "required": [ "end", @@ -199153,81 +200802,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -199238,734 +200825,35 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", + "__geoMeta": { + "description": "Metadata.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sourceRange" ], "properties": { - "digest": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "maxItems": 2, + "minItems": 2 } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - { - "type": [ - "object", - "array" - ], - "items": { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "$ref": "#/components/schemas/Solid" - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - } - ] - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } } } }, @@ -199979,28 +200867,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -200015,6 +200883,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -200024,32 +200897,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -200060,6 +200907,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -200069,51 +200926,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -200127,27 +200995,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -200157,38 +201015,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -200202,27 +201070,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -200232,38 +201090,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -200277,27 +201145,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -200307,38 +201165,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -200352,27 +201220,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -200382,38 +201240,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -200423,840 +201291,112 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } - ] + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -201264,81 +201404,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -201349,64 +201427,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -201414,118 +201471,61 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, @@ -201562,61 +201562,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -201624,6 +201603,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -201634,56 +201626,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -201691,6 +201753,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -201701,50 +201776,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -201756,61 +201887,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -201824,155 +201996,225 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -201986,134 +202228,754 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "$ref": "#/components/schemas/Solid" - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - } - ] - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", "type": "object", "required": [ + "__meta", "id", - "sourceRange" + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" ], "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, "id": { - "description": "The id of the geometry.", + "description": "The id of the plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "$ref": "#/components/schemas/Solid" + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + ] + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { "from": { "description": "The from point.", "type": "array", @@ -202124,6 +202986,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -202133,42 +203005,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -202182,28 +203070,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -202218,6 +203086,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -202227,32 +203100,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -202263,6 +203110,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -202272,51 +203129,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -202330,27 +203198,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -202360,38 +203218,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -202405,27 +203273,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -202435,38 +203293,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -202480,27 +203348,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -202510,38 +203368,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -202555,27 +203423,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -202585,6 +203443,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -202595,28 +203466,25 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -202626,182 +203494,335 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 32, + "minItems": 32, + "nullable": true } - } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "from": { - "description": "The from point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([0, 2], %)\n |> line([3, 1], %)\n |> line([0, -4], %)\n |> close(%)\n\nconst example = extrude(1, exampleSketch)\n |> patternLinear3d({\n axis: [1, 0, 1],\n repetitions: 6,\n distance: 6\n }, %)" + ] + }, + { + "name": "patternTransform", + "summary": "Repeat a 3-dimensional solid, changing it each time.", + "description": "Replicates the 3D solid, applying a transformation function to each replica. Transformation function could alter rotation, scale, visibility, position, etc.\nThe `patternTransform` call itself takes a number for how many total instances of the shape should be. For example, if you use a circle with `patternTransform(4, transform)` then there will be 4 circles: the original, and 3 created by replicating the original and calling the transform function on each.\nThe transform function takes a single parameter: an integer representing which number replication the transform is for. E.g. the first replica to be transformed will be passed the argument `1`. This simplifies your math: the transform function can rely on id `0` being the original instance passed into the `patternTransform`. See the examples.", + "tags": [], + "args": [ + { + "name": "total_instances", + "type": "u32", + "schema": { + "type": "integer", + "format": "uint32", + "minimum": 0.0 + }, + "required": true + }, + { + "name": "transform_function", + "type": "FunctionParam", + "schema": { + "type": "null" + }, + "required": true + }, + { + "name": "solid_set", + "type": "SolidSet", + "schema": { + "description": "A solid or a group of solids.", + "oneOf": [ + { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "solid" + ] + }, + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", + "description": "The tag.", "type": "object", "required": [ "end", @@ -202809,115 +203830,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] } } }, { - "description": "A arc that is tangential to the last path segment", + "description": "An extruded arc.", "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", + "faceId", + "id", + "sourceRange", "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", + "description": "The tag.", "type": "object", "required": [ "end", @@ -202925,121 +203905,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] } } }, { - "description": "a complete arc", + "description": "Geometry metadata.", "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", + "faceId", + "id", + "sourceRange", "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "type": { + "type": "string", + "enum": [ + "chamfer" + ] }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", + "description": "The tag.", "type": "object", "required": [ "end", @@ -203047,107 +203980,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { "digest": { "type": "array", "items": { @@ -203158,94 +204003,51 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true }, - "to": { - "description": "The to point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" } } }, { - "description": "An angled line to.", + "description": "Geometry metadata.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", + "faceId", + "id", + "sourceRange", "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", + "description": "The tag.", "type": "object", "required": [ "end", @@ -203253,785 +204055,277 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true } } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", "type": "object", "required": [ - "id", - "sourceRange" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the geometry.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "ToPoint" + ] }, - "sourceRange": { - "description": "The source range.", + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + }, + "to": { + "description": "The to point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([0, 2], %)\n |> line([3, 1], %)\n |> line([0, -4], %)\n |> close(%)\n\nconst example = extrude(1, exampleSketch)\n |> patternLinear3d({\n axis: [1, 0, 1],\n repetitions: 6,\n distance: 6\n }, %)" - ] - }, - { - "name": "patternTransform", - "summary": "Repeat a 3-dimensional solid, changing it each time.", - "description": "Replicates the 3D solid, applying a transformation function to each replica. Transformation function could alter rotation, scale, visibility, position, etc.\nThe `patternTransform` call itself takes a number for how many total instances of the shape should be. For example, if you use a circle with `patternTransform(4, transform)` then there will be 4 circles: the original, and 3 created by replicating the original and calling the transform function on each.\nThe transform function takes a single parameter: an integer representing which number replication the transform is for. E.g. the first replica to be transformed will be passed the argument `1`. This simplifies your math: the transform function can rely on id `0` being the original instance passed into the `patternTransform`. See the examples.", - "tags": [], - "args": [ - { - "name": "total_instances", - "type": "u32", - "schema": { - "type": "integer", - "format": "uint32", - "minimum": 0.0 - }, - "required": true - }, - { - "name": "transform_function", - "type": "FunctionParam", - "schema": { - "type": "null" - }, - "required": true - }, - { - "name": "solid_set", - "type": "SolidSet", - "schema": { - "description": "A solid or a group of solids.", - "oneOf": [ - { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "type", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" + } }, - "tag": { + { + "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" ], "properties": { - "digest": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -204045,155 +204339,109 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -204207,12 +204455,714 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -204224,61 +205174,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -204286,66 +205215,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -204353,78 +205290,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -204433,27 +205345,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -204463,43 +205365,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -204508,27 +205420,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -204538,55 +205440,32 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, "id": { "description": "The id of the geometry.", @@ -204603,9 +205482,70 @@ }, "maxItems": 2, "minItems": 2 + } + } + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -204613,74 +205553,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -204688,122 +205620,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -204820,32 +205714,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -204856,6 +205724,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -204865,42 +205743,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -204914,28 +205808,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -204950,6 +205824,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -204959,32 +205838,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -204995,6 +205848,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -205004,51 +205867,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -205062,27 +205936,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -205092,38 +205956,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -205137,27 +206011,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -205167,38 +206031,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -205212,27 +206086,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -205242,38 +206106,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -205287,27 +206161,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -205317,38 +206181,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -205358,996 +206232,179 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "solid" - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] } } }, { - "description": "An extruded arc.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, "type": { "type": "string", "enum": [ - "extrudeArc" + "chamfer" ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -206355,81 +206412,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -206440,33 +206435,38 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, @@ -206486,61 +206486,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -206548,6 +206527,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -206558,56 +206550,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -206615,6 +206677,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -206625,50 +206700,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -206680,61 +206811,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -206748,155 +206920,225 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -206910,693 +207152,151 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "$ref": "#/components/schemas/Solid" - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - } - ] - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "path": { - "description": "The path the tag is on.", + "__geoMeta": { + "description": "Metadata.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "id", + "sourceRange" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "from": { - "description": "The from point.", + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } } - ], - "nullable": true + } } - }, - "nullable": true + } }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ { - "description": "A path that goes to a point.", + "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", - "type" + "type", + "x" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -207608,6 +207308,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -207617,63 +207327,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -207699,13 +207379,39 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true }, - "center": { - "description": "the arc's center", + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -207714,8 +207420,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -207733,63 +207439,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -207815,13 +207491,27 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -207830,8 +207520,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -207849,64 +207539,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -207932,114 +207591,161 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { + "y": { "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "y": { "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "z": { + "type": "number", + "format": "double" + } } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { "description": "Metadata.", "type": "object", "required": [ - "id", "sourceRange" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -208052,338 +207758,772 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "$ref": "#/components/schemas/Solid" + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "end", - "start", - "value" + "sourceRange" ], "properties": { - "digest": { + "sourceRange": { + "description": "The source range.", "type": "array", "items": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "maxItems": 2, + "minItems": 2 } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } + } + } + } + } + ] + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } + "maxItems": 2, + "minItems": 2 } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" }, - { - "description": "An angled line to.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "id", + "sketch" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "id", - "sourceRange" + "__geoMeta", + "from", + "to" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + }, + "to": { + "description": "The to point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "start": { + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -208391,81 +208531,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -208476,64 +208554,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -208541,81 +208598,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -208626,37 +208621,42 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "required": [ + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": [ "type" ], "properties": { @@ -208689,61 +208689,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -208751,6 +208730,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -208761,56 +208753,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -208818,6 +208880,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -208828,50 +208903,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -208883,61 +209014,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -208951,155 +209123,225 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -209113,142 +209355,772 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "$ref": "#/components/schemas/Solid" - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - } - ] - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "$ref": "#/components/schemas/Solid" + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + ] + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, "minItems": 2 }, "tag": { @@ -209260,42 +210132,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -209309,28 +210197,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -209345,6 +210213,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -209354,32 +210227,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -209390,6 +210237,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -209399,51 +210256,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -209457,27 +210325,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -209487,38 +210345,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -209532,27 +210400,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -209562,38 +210420,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -209607,27 +210475,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -209637,38 +210495,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -209682,27 +210550,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -209712,6 +210570,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -209722,28 +210593,25 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -209753,840 +210621,112 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 2, + "minItems": 2 } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -210594,74 +210734,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] } } }, { - "description": "An extruded arc.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -210669,193 +210801,61 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } @@ -211009,61 +211009,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -211077,41 +211118,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -211132,6 +211843,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -211200,23 +211934,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -211239,12 +211957,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -211256,61 +212069,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -211318,66 +212110,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -211385,81 +212185,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -211472,569 +212229,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -212052,31 +212415,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -212088,6 +212431,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -212097,63 +212450,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 2, - "minItems": 2 + "nullable": true }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -212179,10 +212502,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -212194,6 +212533,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -212204,6 +212547,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -212213,63 +212566,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -212295,10 +212618,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -212310,6 +212649,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -212320,6 +212663,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -212329,64 +212682,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -212412,10 +212734,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -212427,6 +212766,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -212437,10 +212785,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -212451,62 +212804,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -212532,6 +212856,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -212543,6 +212891,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -212552,66 +212910,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -212637,6 +212962,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -212648,6 +213003,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -212657,73 +213022,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -212749,6 +213074,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -212760,6 +213103,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -212769,449 +213122,853 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "Geometry metadata.", + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "__meta", + "value" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "tag": { - "description": "The tag.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } }, - "y": { + "height": { + "description": "The height of the solid.", "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true }, - "y": { - "type": "number", - "format": "double" + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true }, - "z": { - "type": "number", - "format": "double" + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -213228,32 +213985,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -213264,6 +213995,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -213273,42 +214014,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -213322,28 +214079,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -213358,6 +214095,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -213367,32 +214109,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -213403,6 +214119,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -213412,51 +214138,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -213470,27 +214207,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -213500,38 +214227,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -213545,27 +214282,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -213575,38 +214302,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -213620,27 +214357,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -213650,38 +214377,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -213695,27 +214432,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -213725,38 +214452,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -213766,11 +214503,105 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + } + } + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "[number]", + "schema": { + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const sketch001 = startSketchOn('XY')\n |> startProfileAt([5, 2], %)\n |> angledLine({ angle: 120, length: 50 }, %, $seg01)\n |> angledLine({\n angle: segAng(seg01) + 120,\n length: 50\n }, %)\n |> lineTo(profileStart(%), %)\n |> close(%)\n |> extrude(20, %)" + ] + }, + { + "name": "profileStartX", + "summary": "Extract the provided 2-dimensional sketch's profile's origin's 'x'", + "description": "value.", + "tags": [], + "args": [ + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -213788,31 +214619,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -213824,6 +214635,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -213833,63 +214654,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -213915,10 +214706,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -213930,6 +214737,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -213940,6 +214751,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -213949,63 +214770,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -214031,10 +214822,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -214046,6 +214853,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -214056,6 +214867,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -214065,64 +214886,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -214148,10 +214938,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -214163,6 +214970,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -214173,10 +214989,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -214187,62 +215008,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -214268,6 +215060,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -214279,6 +215095,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -214288,66 +215114,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -214373,6 +215166,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -214384,6 +215207,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -214393,73 +215226,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -214485,6 +215278,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -214496,6 +215307,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -214505,127 +215326,63 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "[number]", - "schema": { - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const sketch001 = startSketchOn('XY')\n |> startProfileAt([5, 2], %)\n |> angledLine({ angle: 120, length: 50 }, %, $seg01)\n |> angledLine({\n angle: segAng(seg01) + 120,\n length: 50\n }, %)\n |> lineTo(profileStart(%), %)\n |> close(%)\n |> extrude(20, %)" - ] - }, - { - "name": "profileStartX", - "summary": "Extract the provided 2-dimensional sketch's profile's origin's 'x'", - "description": "value.", - "tags": [], - "args": [ - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" }, "on": { "description": "What the sketch is on (can be a plane or a face).", @@ -214644,34 +215401,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -214695,32 +215455,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -214789,23 +215523,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -214828,12 +215546,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -214845,61 +215658,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -214907,6 +215699,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -214917,56 +215722,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -214974,6 +215849,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -214984,50 +215872,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -215039,682 +215983,370 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } }, - "info": { - "description": "Engine information for a tag.", + { + "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "TangentialArcTo" + ] }, - "path": { - "description": "The path the tag is on.", + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "to": { - "description": "The to point.", + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { "type": "string", - "format": "uuid" + "enum": [ + "Circle" + ] }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", + "center": { + "description": "the arc's center", "type": "array", "items": { "type": "number", @@ -215723,58 +216355,17 @@ "maxItems": 2, "minItems": 2 }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" }, "ccw": { "description": "arc's direction", "type": "boolean" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -215783,8 +216374,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -215802,63 +216393,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -215884,13 +216445,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -215899,8 +216480,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -215918,64 +216499,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -216001,13 +216551,39 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true }, - "center": { - "description": "the arc's center", + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -216016,8 +216592,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -216026,11 +216602,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -216040,62 +216611,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -216121,78 +216663,11 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" } } }, { - "description": "An angled line to.", + "description": "A base path.", "type": "object", "required": [ "__geoMeta", @@ -216201,31 +216676,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -216237,6 +216692,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -216246,73 +216711,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -216338,183 +216763,579 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, - { - "description": "An extruded arc.", + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -216525,84 +217346,66 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } - }, + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -216610,74 +217413,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -216685,122 +217480,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -216817,32 +217574,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -216853,6 +217584,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -216862,42 +217603,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -216911,28 +217668,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -216947,6 +217684,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -216956,32 +217698,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -216992,60 +217708,81 @@ "maxItems": 2, "minItems": 2 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ "end", "start", "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -217059,27 +217796,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -217089,38 +217816,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -217134,27 +217871,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -217164,38 +217891,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -217209,27 +217946,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -217239,38 +217966,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -217284,27 +218021,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -217314,38 +218041,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -217355,11 +218092,100 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + } + } + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const sketch001 = startSketchOn('XY')\n |> startProfileAt([5, 2], %)\n |> angledLine([-26.6, 50], %)\n |> angledLine([90, 50], %)\n |> angledLineToX({ angle: 30, to: profileStartX(%) }, %)" + ] + }, + { + "name": "profileStartY", + "summary": "Extract the provided 2-dimensional sketch's profile's origin's 'y'", + "description": "value.", + "tags": [], + "args": [ + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -217377,31 +218203,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -217413,6 +218219,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -217422,63 +218238,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -217504,10 +218290,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -217519,6 +218321,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -217529,6 +218335,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -217538,63 +218354,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -217620,10 +218406,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -217635,6 +218437,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -217645,6 +218451,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -217654,64 +218470,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -217737,10 +218522,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -217752,6 +218554,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -217762,10 +218573,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -217776,62 +218592,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -217857,6 +218644,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -217868,6 +218679,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -217877,66 +218698,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -217962,6 +218750,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -217973,6 +218791,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -217982,73 +218810,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -218074,8 +218862,26 @@ "minItems": 2 } } - }, - "from": { + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { "description": "The from point.", "type": "array", "items": { @@ -218085,6 +218891,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -218094,122 +218910,63 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const sketch001 = startSketchOn('XY')\n |> startProfileAt([5, 2], %)\n |> angledLine([-26.6, 50], %)\n |> angledLine([90, 50], %)\n |> angledLineToX({ angle: 30, to: profileStartX(%) }, %)" - ] - }, - { - "name": "profileStartY", - "summary": "Extract the provided 2-dimensional sketch's profile's origin's 'y'", - "description": "value.", - "tags": [], - "args": [ - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" }, "on": { "description": "What the sketch is on (can be a plane or a face).", @@ -218228,34 +218985,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -218279,32 +219039,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -218373,23 +219107,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -218412,12 +219130,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -218429,61 +219242,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -218491,6 +219283,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -218501,56 +219306,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -218558,6 +219433,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -218568,50 +219456,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -218623,633 +219567,264 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } }, - "info": { - "description": "Engine information for a tag.", + { + "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "TangentialArcTo" + ] }, - "path": { - "description": "The path the tag is on.", + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } } - ], - "nullable": true + } } - }, - "nullable": true + } }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ { - "description": "A path that goes to a point.", + "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", + "ccw", + "center", "from", "to", "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -219261,6 +219836,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -219270,63 +219855,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -219352,10 +219907,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -219367,6 +219939,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -219377,6 +219958,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -219386,63 +219977,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -219468,13 +220029,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -219483,8 +220064,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -219502,64 +220083,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -219585,13 +220135,39 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true }, - "center": { - "description": "the arc's center", + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -219600,8 +220176,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -219610,11 +220186,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -219624,62 +220195,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -219705,78 +220247,11 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" } } }, { - "description": "An angled line to.", + "description": "A base path.", "type": "object", "required": [ "__geoMeta", @@ -219785,31 +220260,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -219821,6 +220276,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -219830,73 +220295,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -219922,183 +220347,579 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "tag": { - "description": "The tag.", + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true }, - "value": { - "type": "string" + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, - { - "description": "An extruded arc.", + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -220109,84 +220930,66 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } - }, + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -220194,74 +220997,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -220269,122 +221064,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -220401,32 +221158,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -220437,6 +221168,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -220446,77 +221187,73 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -220531,6 +221268,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -220540,32 +221282,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -220576,6 +221292,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -220585,51 +221311,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -220643,27 +221380,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -220673,38 +221400,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -220718,27 +221455,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -220748,38 +221475,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -220793,27 +221530,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -220823,38 +221550,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -220868,27 +221605,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -220898,38 +221625,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -220939,1005 +221676,253 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const sketch001 = startSketchOn('XY')\n |> startProfileAt([5, 2], %)\n |> angledLine({ angle: -60, length: 14 }, %)\n |> angledLineToY({ angle: 30, to: profileStartY(%) }, %)" + ] + }, + { + "name": "rem", + "summary": "Compute the remainder after dividing `num` by `div`.", + "description": "If `num` is negative, the result will be too.", + "tags": [ + "math" + ], + "args": [ + { + "name": "num", + "type": "i64", + "schema": { + "type": "integer", + "format": "int64" + }, + "required": true + }, + { + "name": "divisor", + "type": "i64", + "schema": { + "type": "integer", + "format": "int64" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "i64", + "schema": { + "type": "integer", + "format": "int64" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "assertEqual(rem(int(7), int(4)), 3, 0.01, \"remainder is 3\")\nassertEqual(rem(int(-7), int(4)), -3, 0.01, \"remainder is 3\")\nassertEqual(rem(int(7), int(-4)), 3, 0.01, \"remainder is 3\")" + ] + }, + { + "name": "revolve", + "summary": "Rotate a sketch around some provided axis, creating a solid from its extent.", + "description": "This, like extrude, is able to create a 3-dimensional solid from a 2-dimensional sketch. However, unlike extrude, this creates a solid by using the extent of the sketch as its revolved around an axis rather than using the extent of the sketch linearly translated through a third dimension.\nRevolve occurs around a local sketch axis rather than a global axis.", + "tags": [], + "args": [ + { + "name": "data", + "type": "RevolveData", + "schema": { + "description": "Data for revolution surfaces.", + "type": "object", + "required": [ + "axis" + ], + "properties": { + "angle": { + "description": "Angle to revolve (in degrees). Default is 360.", + "default": null, + "type": "number", + "format": "double", + "maximum": 360.0, + "minimum": -360.0, + "nullable": true + }, + "axis": { + "description": "Axis of revolution.", + "anyOf": [ + { + "description": "Axis and origin.", + "oneOf": [ + { + "description": "X-axis.", + "type": "string", + "enum": [ + "X" + ] + }, + { + "description": "Y-axis.", + "type": "string", + "enum": [ + "Y" + ] + }, + { + "description": "Flip the X-axis.", + "type": "string", + "enum": [ + "-X" + ] + }, + { + "description": "Flip the Y-axis.", + "type": "string", + "enum": [ + "-Y" + ] + }, + { + "type": "object", + "required": [ + "custom" + ], + "properties": { + "custom": { + "type": "object", + "required": [ + "axis", + "origin" + ], + "properties": { + "axis": { + "description": "The axis.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 + "origin": { + "description": "The origin.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + } } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } + "additionalProperties": false } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + ] + }, + { + "description": "Tagged edge.", + "anyOf": [ + { + "description": "A uuid of an edge.", + "type": "string", + "format": "uuid" + }, + { + "description": "A tag of an edge.", + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const sketch001 = startSketchOn('XY')\n |> startProfileAt([5, 2], %)\n |> angledLine({ angle: -60, length: 14 }, %)\n |> angledLineToY({ angle: 30, to: profileStartY(%) }, %)" - ] - }, - { - "name": "rem", - "summary": "Compute the remainder after dividing `num` by `div`.", - "description": "If `num` is negative, the result will be too.", - "tags": [ - "math" - ], - "args": [ - { - "name": "num", - "type": "i64", - "schema": { - "type": "integer", - "format": "int64" - }, - "required": true - }, - { - "name": "divisor", - "type": "i64", - "schema": { - "type": "integer", - "format": "int64" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "i64", - "schema": { - "type": "integer", - "format": "int64" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "assertEqual(rem(int(7), int(4)), 3, 0.01, \"remainder is 3\")\nassertEqual(rem(int(-7), int(4)), -3, 0.01, \"remainder is 3\")\nassertEqual(rem(int(7), int(-4)), 3, 0.01, \"remainder is 3\")" - ] - }, - { - "name": "revolve", - "summary": "Rotate a sketch around some provided axis, creating a solid from its extent.", - "description": "This, like extrude, is able to create a 3-dimensional solid from a 2-dimensional sketch. However, unlike extrude, this creates a solid by using the extent of the sketch as its revolved around an axis rather than using the extent of the sketch linearly translated through a third dimension.\nRevolve occurs around a local sketch axis rather than a global axis.", - "tags": [], - "args": [ - { - "name": "data", - "type": "RevolveData", - "schema": { - "description": "Data for revolution surfaces.", - "type": "object", - "required": [ - "axis" - ], - "properties": { - "angle": { - "description": "Angle to revolve (in degrees). Default is 360.", - "default": null, - "type": "number", - "format": "double", - "maximum": 360.0, - "minimum": -360.0, - "nullable": true - }, - "axis": { - "description": "Axis of revolution.", - "anyOf": [ - { - "description": "Axis and origin.", - "oneOf": [ - { - "description": "X-axis.", - "type": "string", - "enum": [ - "X" - ] - }, - { - "description": "Y-axis.", - "type": "string", - "enum": [ - "Y" - ] - }, - { - "description": "Flip the X-axis.", - "type": "string", - "enum": [ - "-X" - ] - }, - { - "description": "Flip the Y-axis.", - "type": "string", - "enum": [ - "-Y" - ] - }, - { - "type": "object", - "required": [ - "custom" - ], - "properties": { - "custom": { - "type": "object", - "required": [ - "axis", - "origin" - ], - "properties": { - "axis": { - "description": "The axis.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "origin": { - "description": "The origin.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "additionalProperties": false - } - ] - }, - { - "description": "Tagged edge.", - "anyOf": [ - { - "description": "A uuid of an edge.", - "type": "string", - "format": "uuid" - }, - { - "description": "A tag of an edge.", - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, "path": { "description": "The path the tag is on.", @@ -221948,32 +221933,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -221984,6 +221943,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -221993,51 +221962,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -222051,27 +222031,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -222081,38 +222051,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -222126,27 +222106,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -222156,38 +222126,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -222201,27 +222181,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -222231,38 +222201,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -222276,27 +222256,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -222306,38 +222276,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -222347,8 +222327,28 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } @@ -222381,61 +222381,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", "type": "array", "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -222449,41 +222490,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -222504,6 +223215,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -222572,23 +223306,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -222611,12 +223329,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -222628,61 +223441,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -222690,66 +223482,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -222757,81 +223557,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -222844,569 +223601,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -223424,31 +223787,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -223460,6 +223803,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -223469,63 +223822,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -223551,10 +223874,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -223566,6 +223905,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -223576,6 +223919,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -223585,63 +223938,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -223667,10 +223990,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -223682,9 +224021,23 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", - "type": "array", + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", "items": { "type": "number", "format": "double" @@ -223701,64 +224054,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -223784,10 +224106,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -223799,6 +224138,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -223809,10 +224157,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -223823,62 +224176,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -223904,6 +224228,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -223915,6 +224263,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -223924,66 +224282,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -224009,6 +224334,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -224020,6 +224375,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -224029,73 +224394,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -224121,6 +224446,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -224132,6 +224475,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -224141,451 +224494,855 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "Geometry metadata.", + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "__meta", + "value" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "value": { + "type": "string" }, - "tag": { - "description": "The tag.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "end", - "start", - "value" + "id", + "sketch" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } @@ -224600,32 +225357,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -224636,6 +225367,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -224645,42 +225386,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -224694,28 +225451,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -224730,6 +225467,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -224739,32 +225481,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -224775,6 +225491,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -224784,51 +225510,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -224842,27 +225579,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -224872,38 +225599,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -224917,27 +225654,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -224947,38 +225674,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -224992,27 +225729,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -225022,38 +225749,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -225067,27 +225804,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -225097,38 +225824,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -225138,791 +225875,54 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 2, + "minItems": 2 } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } @@ -225944,61 +225944,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -226006,66 +225985,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -226073,81 +226060,188 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "sourceRange" + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -226161,38 +226255,116 @@ } } } - }, + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -226206,41 +226378,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -226261,6 +227103,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -226329,23 +227194,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -226368,12 +227217,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -226385,61 +227329,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -226447,66 +227370,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -226514,78 +227445,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ + }, { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -226594,27 +227500,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -226624,43 +227520,53 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "An extruded arc.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -226669,27 +227575,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -226699,74 +227595,112 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - }, + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -226774,74 +227708,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -226849,122 +227775,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -226981,32 +227869,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -227017,6 +227879,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -227026,42 +227898,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -227075,28 +227963,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -227111,6 +227979,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -227120,32 +227993,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -227156,6 +228003,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -227165,51 +228022,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -227223,27 +228091,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -227253,38 +228111,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -227298,27 +228166,17 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, "faceId": { "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -227328,38 +228186,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -227373,27 +228241,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -227403,38 +228261,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -227448,27 +228316,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -227478,38 +228336,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -227519,182 +228387,416 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "to": { - "description": "The to point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 32, + "minItems": 32, + "nullable": true } - } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const part001 = startSketchOn('XY')\n |> startProfileAt([4, 12], %)\n |> line([2, 0], %)\n |> line([0, -6], %)\n |> line([4, -6], %)\n |> line([0, -6], %)\n |> line([-3.75, -4.5], %)\n |> line([0, -5.5], %)\n |> line([-2, 0], %)\n |> close(%)\n |> revolve({ axis: 'y' }, %) // default angle is 360", + "// A donut shape.\nconst sketch001 = startSketchOn('XY')\n |> circle({ center: [15, 0], radius: 5 }, %)\n |> revolve({ angle: 360, axis: 'y' }, %)", + "const part001 = startSketchOn('XY')\n |> startProfileAt([4, 12], %)\n |> line([2, 0], %)\n |> line([0, -6], %)\n |> line([4, -6], %)\n |> line([0, -6], %)\n |> line([-3.75, -4.5], %)\n |> line([0, -5.5], %)\n |> line([-2, 0], %)\n |> close(%)\n |> revolve({ axis: 'y', angle: 180 }, %)", + "const part001 = startSketchOn('XY')\n |> startProfileAt([4, 12], %)\n |> line([2, 0], %)\n |> line([0, -6], %)\n |> line([4, -6], %)\n |> line([0, -6], %)\n |> line([-3.75, -4.5], %)\n |> line([0, -5.5], %)\n |> line([-2, 0], %)\n |> close(%)\n |> revolve({ axis: 'y', angle: 180 }, %)\nconst part002 = startSketchOn(part001, 'end')\n |> startProfileAt([4.5, -5], %)\n |> line([0, 5], %)\n |> line([5, 0], %)\n |> line([0, -5], %)\n |> close(%)\n |> extrude(5, %)", + "const box = startSketchOn('XY')\n |> startProfileAt([0, 0], %)\n |> line([0, 20], %)\n |> line([20, 0], %)\n |> line([0, -20], %)\n |> close(%)\n |> extrude(20, %)\n\nconst sketch001 = startSketchOn(box, \"END\")\n |> circle({ center: [10, 10], radius: 4 }, %)\n |> revolve({ angle: -90, axis: 'y' }, %)", + "const box = startSketchOn('XY')\n |> startProfileAt([0, 0], %)\n |> line([0, 20], %)\n |> line([20, 0], %)\n |> line([0, -20], %, $revolveAxis)\n |> close(%)\n |> extrude(20, %)\n\nconst sketch001 = startSketchOn(box, \"END\")\n |> circle({ center: [10, 10], radius: 4 }, %)\n |> revolve({\n angle: 90,\n axis: getOppositeEdge(revolveAxis)\n }, %)", + "const box = startSketchOn('XY')\n |> startProfileAt([0, 0], %)\n |> line([0, 20], %)\n |> line([20, 0], %)\n |> line([0, -20], %, $revolveAxis)\n |> close(%)\n |> extrude(20, %)\n\nconst sketch001 = startSketchOn(box, \"END\")\n |> circle({ center: [10, 10], radius: 4 }, %)\n |> revolve({\n angle: 90,\n axis: getOppositeEdge(revolveAxis),\n tolerance: 0.0001\n }, %)", + "const sketch001 = startSketchOn('XY')\n |> startProfileAt([10, 0], %)\n |> line([5, -5], %)\n |> line([5, 5], %)\n |> lineTo([profileStartX(%), profileStartY(%)], %)\n |> close(%)\n\nconst part001 = revolve({\n axis: {\n custom: { axis: [0.0, 1.0], origin: [0.0, 0.0] }\n }\n}, sketch001)" + ] + }, + { + "name": "segAng", + "summary": "Compute the angle (in degrees) of the provided line segment.", + "description": "", + "tags": [], + "args": [ + { + "name": "tag", + "type": "TagIdentifier", + "schema": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "center": { - "description": "the arc's center", + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "from": { - "description": "The from point.", + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", + "description": "The tag.", "type": "object", "required": [ "end", @@ -227702,115 +228804,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] } } }, { - "description": "A arc that is tangential to the last path segment", + "description": "An extruded arc.", "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", + "faceId", + "id", + "sourceRange", "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", + "description": "The tag.", "type": "object", "required": [ "end", @@ -227818,121 +228879,149 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] } } }, { - "description": "a complete arc", + "description": "Geometry metadata.", "type": "object", "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", + "faceId", + "id", + "sourceRange", "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sourceRange" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sourceRange": { - "description": "The source range.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" }, - "maxItems": 2, - "minItems": 2 + "nullable": true }, - "from": { - "description": "The from point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", + "description": "The tag.", "type": "object", "required": [ "end", @@ -227940,100 +229029,257 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] } } - }, - { - "description": "A path that is horizontal.", + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> line([5, 10], %, $seg01)\n |> line([-10, 0], %)\n |> angledLine([segAng(seg01), 10], %)\n |> line([-10, 0], %)\n |> angledLine([segAng(seg01), -15], %)\n |> close(%)\n\nconst example = extrude(4, exampleSketch)" + ] + }, + { + "name": "segEndX", + "summary": "Compute the ending point of the provided line segment along the 'x' axis.", + "description": "", + "tags": [], + "args": [ + { + "name": "tag", + "type": "TagIdentifier", + "schema": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", + "description": "The tag.", "type": "object", "required": [ "end", @@ -228041,104 +229287,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" } } }, { - "description": "An angled line to.", + "description": "An extruded arc.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", + "faceId", + "id", + "sourceRange", "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", + "description": "The tag.", "type": "object", "required": [ "end", @@ -228146,111 +229362,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true } } }, { - "description": "A base path.", + "description": "Geometry metadata.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", + "faceId", + "id", + "sourceRange", "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "chamfer" + ] }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", + "description": "The tag.", "type": "object", "required": [ "end", @@ -228258,391 +229437,178 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } - } - ] - } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", + { + "description": "Geometry metadata.", "type": "object", "required": [ - "end", - "start", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 32, - "minItems": 32, "nullable": true }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + "sourceRange": { + "description": "The source range.", "type": "array", "items": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "maxItems": 2, + "minItems": 2 } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + } } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } + "maxItems": 2, + "minItems": 2 } } - ] + } } } - } + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" }, "required": true }, "unpublished": false, "deprecated": false, "examples": [ - "const part001 = startSketchOn('XY')\n |> startProfileAt([4, 12], %)\n |> line([2, 0], %)\n |> line([0, -6], %)\n |> line([4, -6], %)\n |> line([0, -6], %)\n |> line([-3.75, -4.5], %)\n |> line([0, -5.5], %)\n |> line([-2, 0], %)\n |> close(%)\n |> revolve({ axis: 'y' }, %) // default angle is 360", - "// A donut shape.\nconst sketch001 = startSketchOn('XY')\n |> circle({ center: [15, 0], radius: 5 }, %)\n |> revolve({ angle: 360, axis: 'y' }, %)", - "const part001 = startSketchOn('XY')\n |> startProfileAt([4, 12], %)\n |> line([2, 0], %)\n |> line([0, -6], %)\n |> line([4, -6], %)\n |> line([0, -6], %)\n |> line([-3.75, -4.5], %)\n |> line([0, -5.5], %)\n |> line([-2, 0], %)\n |> close(%)\n |> revolve({ axis: 'y', angle: 180 }, %)", - "const part001 = startSketchOn('XY')\n |> startProfileAt([4, 12], %)\n |> line([2, 0], %)\n |> line([0, -6], %)\n |> line([4, -6], %)\n |> line([0, -6], %)\n |> line([-3.75, -4.5], %)\n |> line([0, -5.5], %)\n |> line([-2, 0], %)\n |> close(%)\n |> revolve({ axis: 'y', angle: 180 }, %)\nconst part002 = startSketchOn(part001, 'end')\n |> startProfileAt([4.5, -5], %)\n |> line([0, 5], %)\n |> line([5, 0], %)\n |> line([0, -5], %)\n |> close(%)\n |> extrude(5, %)", - "const box = startSketchOn('XY')\n |> startProfileAt([0, 0], %)\n |> line([0, 20], %)\n |> line([20, 0], %)\n |> line([0, -20], %)\n |> close(%)\n |> extrude(20, %)\n\nconst sketch001 = startSketchOn(box, \"END\")\n |> circle({ center: [10, 10], radius: 4 }, %)\n |> revolve({ angle: -90, axis: 'y' }, %)", - "const box = startSketchOn('XY')\n |> startProfileAt([0, 0], %)\n |> line([0, 20], %)\n |> line([20, 0], %)\n |> line([0, -20], %, $revolveAxis)\n |> close(%)\n |> extrude(20, %)\n\nconst sketch001 = startSketchOn(box, \"END\")\n |> circle({ center: [10, 10], radius: 4 }, %)\n |> revolve({\n angle: 90,\n axis: getOppositeEdge(revolveAxis)\n }, %)", - "const box = startSketchOn('XY')\n |> startProfileAt([0, 0], %)\n |> line([0, 20], %)\n |> line([20, 0], %)\n |> line([0, -20], %, $revolveAxis)\n |> close(%)\n |> extrude(20, %)\n\nconst sketch001 = startSketchOn(box, \"END\")\n |> circle({ center: [10, 10], radius: 4 }, %)\n |> revolve({\n angle: 90,\n axis: getOppositeEdge(revolveAxis),\n tolerance: 0.0001\n }, %)", - "const sketch001 = startSketchOn('XY')\n |> startProfileAt([10, 0], %)\n |> line([5, -5], %)\n |> line([5, 5], %)\n |> lineTo([profileStartX(%), profileStartY(%)], %)\n |> close(%)\n\nconst part001 = revolve({\n axis: {\n custom: { axis: [0.0, 1.0], origin: [0.0, 0.0] }\n }\n}, sketch001)" + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([20, 0], %, $thing)\n |> line([0, 5], %)\n |> line([segEndX(thing), 0], %)\n |> line([-20, 10], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" ] }, { - "name": "segAng", - "summary": "Compute the angle (in degrees) of the provided line segment.", + "name": "segEndY", + "summary": "Compute the ending point of the provided line segment along the 'y' axis.", "description": "", "tags": [], "args": [ @@ -228656,28 +229622,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -228692,6 +229638,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -228701,32 +229652,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -228737,6 +229662,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -228746,69 +229681,41 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", + "__geoMeta": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, "id": { "description": "The id of the geometry.", "type": "string", @@ -228824,53 +229731,17 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] } } - }, + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ { - "description": "An extruded arc.", + "description": "An extrude plane.", "type": "object", "required": [ "faceId", @@ -228879,27 +229750,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -228909,56 +229770,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, "id": { "description": "The id of the geometry.", "type": "string", @@ -228974,53 +229812,11 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "An extruded arc.", "type": "object", "required": [ "faceId", @@ -229029,27 +229825,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -229059,139 +229845,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> line([5, 10], %, $seg01)\n |> line([-10, 0], %)\n |> angledLine([segAng(seg01), 10], %)\n |> line([-10, 0], %)\n |> angledLine([segAng(seg01), -15], %)\n |> close(%)\n\nconst example = extrude(4, exampleSketch)" - ] - }, - { - "name": "segEndX", - "summary": "Compute the ending point of the provided line segment along the 'x' axis.", - "description": "", - "tags": [], - "args": [ - { - "name": "tag", - "type": "TagIdentifier", - "schema": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { "id": { "description": "The id of the geometry.", "type": "string", @@ -229210,75 +229890,8 @@ } } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ { - "description": "An extrude plane.", + "description": "Geometry metadata.", "type": "object", "required": [ "faceId", @@ -229287,27 +229900,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -229317,56 +229920,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, "id": { "description": "The id of the geometry.", "type": "string", @@ -229382,48 +229962,6 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, @@ -229437,27 +229975,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -229467,56 +229995,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, "id": { "description": "The id of the geometry.", "type": "string", @@ -229532,48 +230037,6 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } @@ -229583,8 +230046,28 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, @@ -229603,12 +230086,12 @@ "unpublished": false, "deprecated": false, "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([20, 0], %, $thing)\n |> line([0, 5], %)\n |> line([segEndX(thing), 0], %)\n |> line([-20, 10], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([20, 0], %)\n |> line([0, 3], %, $thing)\n |> line([-10, 0], %)\n |> line([0, segEndY(thing)], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" ] }, { - "name": "segEndY", - "summary": "Compute the ending point of the provided line segment along the 'y' axis.", + "name": "segLen", + "summary": "Compute the length of the provided line segment.", "description": "", "tags": [], "args": [ @@ -229622,28 +230105,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -229658,6 +230121,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -229667,32 +230135,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -229703,6 +230145,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -229712,51 +230164,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -229770,27 +230233,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -229800,38 +230253,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -229845,27 +230308,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -229875,56 +230328,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, "id": { "description": "The id of the geometry.", "type": "string", @@ -229940,48 +230370,6 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, @@ -229995,27 +230383,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -230025,2156 +230403,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([20, 0], %)\n |> line([0, 3], %, $thing)\n |> line([-10, 0], %)\n |> line([0, segEndY(thing)], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "segLen", - "summary": "Compute the length of the provided line segment.", - "description": "", - "tags": [], - "args": [ - { - "name": "tag", - "type": "TagIdentifier", - "schema": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle: 60, length: 10 }, %, $thing)\n |> tangentialArc({ offset: -120, radius: 5 }, %)\n |> angledLine({ angle: -60, length: segLen(thing) }, %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "shell", - "summary": "Remove volume from a 3-dimensional shape such that a wall of the", - "description": "provided thickness remains, taking volume starting at the provided face, leaving it open in that direction.", - "tags": [], - "args": [ - { - "name": "data", - "type": "ShellData", - "schema": { - "description": "Data for shells.", - "type": "object", - "required": [ - "faces", - "thickness" - ], - "properties": { - "faces": { - "description": "The faces you want removed.", - "type": "array", - "items": { - "description": "A tag for a face.", - "anyOf": [ - { - "oneOf": [ - { - "description": "The start face as in before you extruded. This could also be known as the bottom face. But we do not call it bottom because it would be the top face if you extruded it in the opposite direction or flipped the camera.", - "type": "string", - "enum": [ - "start" - ] - }, - { - "description": "The end face after you extruded. This could also be known as the top face. But we do not call it top because it would be the bottom face if you extruded it in the opposite direction or flipped the camera.", - "type": "string", - "enum": [ - "end" - ] - } - ] - }, - { - "description": "A tag for the face.", - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - ] - } - }, - "thickness": { - "description": "The thickness of the shell.", - "type": "number", - "format": "double" - } - } - }, - "required": true - }, - { - "name": "solid_set", - "type": "SolidSet", - "schema": { - "description": "A solid or a group of solids.", - "oneOf": [ - { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "type", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - } - ] - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sourceRange": { - "description": "The source range.", + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } - } + }, + "nullable": true }, - "from": { - "description": "The from point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", + "description": "The tag.", "type": "object", "required": [ "end", @@ -232182,138 +230478,295 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 } } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle: 60, length: 10 }, %, $thing)\n |> tangentialArc({ offset: -120, radius: 5 }, %)\n |> angledLine({ angle: -60, length: segLen(thing) }, %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" + ] + }, + { + "name": "shell", + "summary": "Remove volume from a 3-dimensional shape such that a wall of the", + "description": "provided thickness remains, taking volume starting at the provided face, leaving it open in that direction.", + "tags": [], + "args": [ + { + "name": "data", + "type": "ShellData", + "schema": { + "description": "Data for shells.", + "type": "object", + "required": [ + "faces", + "thickness" + ], + "properties": { + "thickness": { + "description": "The thickness of the shell.", + "type": "number", + "format": "double" + }, + "faces": { + "description": "The faces you want removed.", + "type": "array", + "items": { + "description": "A tag for a face.", + "anyOf": [ + { + "oneOf": [ + { + "description": "The start face as in before you extruded. This could also be known as the bottom face. But we do not call it bottom because it would be the top face if you extruded it in the opposite direction or flipped the camera.", + "type": "string", + "enum": [ + "start" + ] + }, + { + "description": "The end face after you extruded. This could also be known as the top face. But we do not call it top because it would be the bottom face if you extruded it in the opposite direction or flipped the camera.", + "type": "string", + "enum": [ + "end" + ] + } + ] + }, + { + "description": "A tag for the face.", + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "__meta", - "value" + "id", + "sketch" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" }, - "info": { - "description": "Engine information for a tag.", + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "from", + "to" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "path": { - "description": "The path the tag is on.", + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", + "description": "The tag.", "type": "object", "required": [ "end", @@ -232321,365 +230774,667 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "maxItems": 2, "minItems": 2 } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + } }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] }, - { - "description": "An extruded arc.", + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "end", + "start", + "value" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sourceRange": { - "description": "The source range.", + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, + "maxItems": 32, + "minItems": 32, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } - } + }, + "nullable": true }, - { - "description": "Geometry metadata.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "end", + "start", + "value" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sourceRange": { - "description": "The source range.", + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, + "maxItems": 32, + "minItems": 32, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } - } + }, + "nullable": true }, - { - "description": "Geometry metadata.", + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "end", + "start", + "value" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sourceRange": { - "description": "The source range.", + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, + "maxItems": 32, + "minItems": 32, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } - } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } - ], + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + ] + } + } + } + }, + "required": true + }, + { + "name": "solid_set", + "type": "SolidSet", + "schema": { + "description": "A solid or a group of solids.", + "oneOf": [ + { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "solid" + ] + }, + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -232697,6 +231452,68 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -232722,6 +231539,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -232733,6 +231584,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -232742,63 +231603,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -232824,10 +231655,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -232839,6 +231686,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -232849,6 +231700,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -232858,63 +231719,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -232940,10 +231771,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -232955,6 +231803,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -232965,6 +231822,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -232974,64 +231841,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -233057,13 +231893,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -233072,8 +231928,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -233082,11 +231938,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -233096,62 +231947,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -233177,6 +231999,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -233188,6 +232040,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -233197,66 +232059,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -233282,6 +232111,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -233293,6 +232140,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -233302,86 +232159,213 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { + }, + "__meta": { + "type": "array", + "items": { "description": "Metadata.", "type": "object", "required": [ - "id", "sourceRange" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -233394,619 +232378,728 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "y": { "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "z": { + "type": "number", + "format": "double" + } } - } - } - ] - } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "solid" - ] - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "y": { + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "z": { + "type": "number", + "format": "double" + } } }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } } }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } } }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } } } - } - ] - } - } - } - }, - { - "type": [ - "object", - "array" - ], - "items": { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", + ] + }, + "start": { + "description": "The starting path.", "type": "object", "required": [ - "sourceRange" + "__geoMeta", + "from", + "to" ], "properties": { - "sourceRange": { - "description": "The source range.", + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "edgeId", - "id", - "radius", - "type" + "end", + "start", + "value" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "radius": { - "type": "number", - "format": "double" + "value": { + "type": "string" }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } - } + }, + "nullable": true }, - { - "description": "A chamfer.", + "__geoMeta": { + "description": "Metadata.", "type": "object", "required": [ - "edgeId", "id", - "length", - "type" + "sourceRange" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, "id": { - "description": "The id of the engine command that called this chamfer.", + "description": "The id of the geometry.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { "sourceRange": { "description": "The source range.", "type": "array", @@ -234020,353 +233113,615 @@ } } } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "__meta", "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" + "sketch" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { - "description": "The id of the plane.", + "description": "The id of the tagged object.", "type": "string", "format": "uuid" }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { + "sketch": { + "description": "The sketch the tag is on.", "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } + "format": "uuid" }, - "zAxis": { - "description": "The z-axis (normal).", + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "x", - "y", - "z" + "__geoMeta", + "from", + "to" ], "properties": { - "x": { - "type": "number", - "format": "double" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "y": { - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "$ref": "#/components/schemas/Solid" - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" + }, + "nullable": true }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "y": { - "type": "number", - "format": "double" + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "z": { - "type": "number", - "format": "double" + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "z": { - "type": "number", - "format": "double" - } + "maxItems": 2, + "minItems": 2 } } } } - ] - }, - "start": { - "description": "The starting path.", + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "sourceRange" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { "type": "object", "required": [ - "id", - "sourceRange" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sourceRange": { - "description": "The source range.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" }, - "maxItems": 2, - "minItems": 2 + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag of the path.", "type": "object", "required": [ "end", @@ -234374,655 +233729,434 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 } } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "type": [ + "object", + "array" + ], + "items": { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "to": { - "description": "The to point.", + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 32, + "minItems": 32, + "nullable": true } - } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ { - "description": "A arc that is tangential to the last path segment that goes to a point", + "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", - "ccw", - "center", "from", "to", "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -235031,8 +234165,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -235050,63 +234184,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -235132,10 +234236,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -235147,6 +234267,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -235157,6 +234281,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -235166,64 +234300,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -235249,10 +234352,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -235264,6 +234383,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -235274,10 +234397,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -235288,62 +234416,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -235369,9 +234468,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "from": { - "description": "The from point.", + "center": { + "description": "the arc's center", "type": "array", "items": { "type": "number", @@ -235380,44 +234500,17 @@ "maxItems": 2, "minItems": 2 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" }, - "to": { - "description": "The to point.", + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -235426,57 +234519,8 @@ "maxItems": 2, "minItems": 2 }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -235494,73 +234538,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -235586,1067 +234590,844 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } - } - ] - } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 }, - "tag": { - "description": "The tag.", + { + "description": "A path that is horizontal.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to", + "type", + "x" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "solids" - ] - } - } - } - ] - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "SolidSet", - "schema": { - "description": "A solid or a group of solids.", - "oneOf": [ - { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "type", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", + { + "description": "A base path.", "type": "object", "required": [ - "sourceRange" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "sourceRange": { - "description": "The source range.", + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", "type": "object", "required": [ - "x", - "y", - "z" + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" ], "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { + "type": { "type": "string", "enum": [ - "XY", - "XZ", - "YZ" + "plane" ] }, - { - "description": "A custom plane.", + "id": { + "description": "The id of the plane.", "type": "string", - "enum": [ - "Custom" + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } - ] + } }, - "xAxis": { - "description": "What should the plane’s X axis be?", + { + "description": "A face.", "type": "object", "required": [ - "x", - "y", - "z" + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" ], "properties": { - "x": { - "type": "number", - "format": "double" + "type": { + "type": "string", + "enum": [ + "face" + ] }, - "y": { - "type": "number", - "format": "double" + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" }, - "z": { - "type": "number", - "format": "double" + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "$ref": "#/components/schemas/Solid" + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } + } + ] + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "yAxis": { - "description": "What should the plane’s Y axis be?", + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "x", - "y", - "z" + "end", + "start", + "value" ], "properties": { - "x": { - "type": "number", - "format": "double" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "y": { - "type": "number", - "format": "double" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "z": { - "type": "number", - "format": "double" + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } - } + }, + "nullable": true }, - "zAxis": { - "description": "The z-axis (normal).", + "__geoMeta": { + "description": "Metadata.", "type": "object", "required": [ - "x", - "y", - "z" + "id", + "sourceRange" ], "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "z": { - "type": "number", - "format": "double" + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } } }, - { - "description": "A face.", + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "sourceRange" + "id", + "sketch" ], "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "sourceRange" + "__geoMeta", + "from", + "to" ], "properties": { - "sourceRange": { - "description": "The source range.", + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "edgeId", - "id", - "radius", - "type" + "end", + "start", + "value" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "radius": { - "type": "number", - "format": "double" + "value": { + "type": "string" }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } - } - }, - { - "description": "A chamfer.", + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", "type": "object", "required": [ - "edgeId", "id", - "length", - "type" + "sourceRange" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, "id": { - "description": "The id of the engine command that called this chamfer.", + "description": "The id of the geometry.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + "maxItems": 2, + "minItems": 2 } } } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "$ref": "#/components/schemas/Sketch" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", "oneOf": [ { "description": "An extrude plane.", @@ -236658,27 +235439,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -236688,38 +235459,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -236733,27 +235514,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -236763,38 +235534,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -236808,27 +235589,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -236838,38 +235609,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -236883,27 +235664,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -236913,681 +235684,665 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } - ] + ], + "nullable": true } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "z": { - "type": "number", - "format": "double" - } + "maxItems": 2, + "minItems": 2 } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" + } + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "y": { - "type": "number", - "format": "double" + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "z": { - "type": "number", - "format": "double" - } + "nullable": true } } } - } - ] + ] + } }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "solids" + ] + } + } + } + ] + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "SolidSet", + "schema": { + "description": "A solid or a group of solids.", + "oneOf": [ + { + "description": "An solid is a collection of extrude surfaces.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "type", + "value" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "solid" + ] + }, + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "end": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", "type": "array", "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -237605,6 +236360,68 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -237630,6 +236447,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -237641,6 +236492,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -237650,63 +236511,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -237732,10 +236563,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -237747,6 +236594,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -237757,6 +236608,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -237766,63 +236627,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -237848,10 +236679,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -237863,6 +236711,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -237873,6 +236730,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -237882,64 +236749,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -237965,13 +236801,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -237980,8 +236836,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -237990,11 +236846,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -238004,62 +236855,145 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, { - "description": "A path that is horizontal.", + "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", - "type", - "x" + "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -238085,6 +237019,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -238096,6 +237048,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -238105,66 +237067,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -238190,239 +237119,1450 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "end", - "start", - "value" + "sourceRange" ], "properties": { - "digest": { + "sourceRange": { + "description": "The source range.", "type": "array", "items": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "maxItems": 2, + "minItems": 2 } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "y": { "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "$ref": "#/components/schemas/Sketch" + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ + { + "description": "A fillet.", + "type": "object", + "required": [ + "edgeId", + "id", + "radius", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "id": { + "description": "The id of the engine command that called this fillet.", + "type": "string", + "format": "uuid" + }, + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + }, + { + "description": "A chamfer.", + "type": "object", + "required": [ + "edgeId", + "id", + "length", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" + }, + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + ] + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } + "maxItems": 2, + "minItems": 2 } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" }, - { - "description": "A base path.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "id", + "sketch" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "id", - "sourceRange" + "__geoMeta", + "from", + "to" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + }, + "to": { + "description": "The to point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 32, - "minItems": 32, "nullable": true }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "start": { + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "type": { + "endCapId": { + "description": "The id of the extrusion end cap", "type": "string", - "enum": [ - "solid" - ] + "format": "uuid", + "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -238430,81 +238570,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -238515,64 +238593,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -238580,81 +238637,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -238665,33 +238660,38 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, @@ -238711,61 +238711,190 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "id": { - "description": "The id of the engine command that called this fillet.", + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -238773,66 +238902,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -238840,60 +238977,54 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -238905,898 +239036,89 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "sourceRange" + "end", + "start", + "value" ], "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "$ref": "#/components/schemas/Solid" - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - } - ] - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } - ], + }, "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -239822,6 +239144,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -239833,6 +239189,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -239842,63 +239208,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -239924,10 +239260,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -239939,6 +239291,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -239949,6 +239305,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -239958,63 +239324,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -240040,10 +239376,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -240055,6 +239408,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -240065,6 +239427,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -240074,64 +239446,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -240157,13 +239498,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -240172,8 +239533,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -240182,11 +239543,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -240196,62 +239552,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -240277,6 +239604,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -240288,6 +239645,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -240297,66 +239664,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -240382,6 +239716,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -240393,6 +239745,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -240402,213 +239764,991 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "$ref": "#/components/schemas/Solid" + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + ] + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } + "maxItems": 2, + "minItems": 2 } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" }, - { - "description": "A base path.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "id", + "sketch" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "id", - "sourceRange" + "__geoMeta", + "from", + "to" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + }, + "to": { + "description": "The to point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 32, - "minItems": 32, "nullable": true }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "start": { + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -240616,81 +240756,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -240701,64 +240779,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -240766,81 +240823,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -240851,33 +240846,38 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, @@ -241015,34 +241015,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -241066,32 +241069,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -241160,23 +241137,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -241199,12 +241160,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -241216,61 +241272,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -241278,66 +241313,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -241345,81 +241388,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -241432,859 +241432,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "$ref": "#/components/schemas/Solid" - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - } - ] - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "chamfer" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -242302,6 +241618,68 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -242327,6 +241705,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -242338,6 +241750,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -242347,63 +241769,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -242429,10 +241821,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -242444,6 +241852,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -242454,6 +241866,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -242463,63 +241885,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -242545,10 +241937,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -242560,6 +241969,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -242570,6 +241988,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -242579,64 +242007,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -242662,13 +242059,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -242677,8 +242094,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -242687,11 +242104,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -242701,62 +242113,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -242782,6 +242165,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -242793,6 +242206,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -242802,58 +242225,63 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, { - "description": "An angled line to.", + "description": "A base path.", "type": "object", "required": [ "__geoMeta", @@ -242862,6 +242290,68 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -242887,106 +242377,288 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "z": { "type": "number", "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true + } } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { + }, + "solid": { + "description": "The solid the face is on.", + "$ref": "#/components/schemas/Solid" + }, + "__meta": { + "type": "array", + "items": { "description": "Metadata.", "type": "object", "required": [ - "id", "sourceRange" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -242999,121 +242671,645 @@ "minItems": 2 } } + } + } + } + } + ] + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -243121,81 +243317,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -243206,64 +243340,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -243271,81 +243384,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -243354,114 +243405,63 @@ "minimum": 0.0 }, "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -243482,29 +243482,29 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true @@ -243526,61 +243526,774 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -243594,12 +244307,59 @@ } } } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -243622,35 +244382,132 @@ "format": "double" } } - }, + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ - "plane" + "face" ] }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] + "description": "The tag of the face.", + "type": "string" }, "xAxis": { - "description": "What should the plane’s X axis be?", + "description": "What should the face’s X axis be?", "type": "object", "required": [ "x", @@ -243673,7 +244530,7 @@ } }, "yAxis": { - "description": "What should the plane’s Y axis be?", + "description": "What should the face’s Y axis be?", "type": "object", "required": [ "x", @@ -243717,50 +244574,6 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" }, "solid": { "description": "The solid the face is on.", @@ -243773,61 +244586,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -243835,66 +244627,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -243902,81 +244702,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -243989,569 +244746,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -244569,6 +244932,68 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -244594,6 +245019,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -244605,6 +245064,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -244614,63 +245083,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -244696,10 +245135,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -244711,6 +245166,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -244721,6 +245180,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -244730,63 +245199,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -244812,10 +245251,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -244827,6 +245283,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -244837,6 +245302,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -244846,64 +245321,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -244929,13 +245373,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -244944,8 +245408,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -244954,11 +245418,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -244968,62 +245427,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -245049,6 +245479,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -245060,6 +245520,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -245069,66 +245539,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -245154,6 +245591,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -245165,6 +245620,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -245174,6 +245639,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -245184,203 +245662,678 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "value": { - "type": "string" + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", + ], "nullable": true } - } + }, + "nullable": true }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -245388,81 +246341,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -245473,64 +246364,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -245538,81 +246408,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -245623,112 +246431,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -245745,32 +246502,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -245781,6 +246512,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -245790,42 +246531,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -245839,28 +246596,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -245875,6 +246612,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -245884,32 +246626,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -245920,6 +246636,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -245929,51 +246655,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -245987,27 +246724,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -246017,38 +246744,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -246062,27 +246799,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -246092,38 +246819,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -246137,27 +246874,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -246167,38 +246894,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -246212,27 +246949,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -246242,38 +246969,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -246283,11 +247020,107 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> line([0, 10], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)", + "const exampleSketch = startSketchOn('-XZ')\n |> startProfileAt([10, 10], %)\n |> line([10, 0], %)\n |> line([0, 10], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)", + "const exampleSketch = startSketchOn('-XZ')\n |> startProfileAt([-10, 23], %)\n |> line([10, 0], %)\n |> line([0, 10], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" + ] + }, + { + "name": "startSketchAt", + "summary": "Start a new 2-dimensional sketch at a given point on the 'XY' plane.", + "description": "", + "tags": [], + "args": [ + { + "name": "data", + "type": "[number]", + "schema": { + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -246305,31 +247138,11 @@ "type" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] }, "from": { "description": "The from point.", @@ -246341,6 +247154,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -246350,63 +247173,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -246432,10 +247225,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, "center": { "description": "the arc's center", @@ -246447,6 +247256,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -246457,6 +247270,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -246466,63 +247289,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -246548,10 +247341,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -246563,6 +247372,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -246573,6 +247386,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -246582,64 +247405,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -246665,10 +247457,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -246680,6 +247489,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -246690,10 +247508,15 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, "tag": { "description": "The tag of the path.", @@ -246704,62 +247527,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -246785,6 +247579,30 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, "from": { "description": "The from point.", @@ -246796,6 +247614,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -246805,66 +247633,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -246890,6 +247685,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -246901,6 +247726,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -246910,73 +247745,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -247002,6 +247797,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -247013,6 +247826,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -247022,129 +247845,63 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } ] } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> line([10, 0], %)\n |> line([0, 10], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)", - "const exampleSketch = startSketchOn('-XZ')\n |> startProfileAt([10, 10], %)\n |> line([10, 0], %)\n |> line([0, 10], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)", - "const exampleSketch = startSketchOn('-XZ')\n |> startProfileAt([-10, 23], %)\n |> line([10, 0], %)\n |> line([0, 10], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "startSketchAt", - "summary": "Start a new 2-dimensional sketch at a given point on the 'XY' plane.", - "description": "", - "tags": [], - "args": [ - { - "name": "data", - "type": "[number]", - "schema": { - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" }, "on": { "description": "What the sketch is on (can be a plane or a face).", @@ -247163,34 +247920,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -247204,41 +247964,15 @@ "type": "number", "format": "double" }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] + "y": { + "type": "number", + "format": "double" }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] + "z": { + "type": "number", + "format": "double" } - ] + } }, "xAxis": { "description": "What should the plane’s X axis be?", @@ -247308,23 +248042,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -247347,12 +248065,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -247364,61 +248177,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -247426,6 +248218,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -247436,56 +248241,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -247493,6 +248368,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -247503,50 +248391,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -247558,608 +248502,89 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "ToPoint" + ] }, - "path": { - "description": "The path the tag is on.", + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } - ], + }, "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -248185,6 +248610,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -248196,6 +248655,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -248205,63 +248674,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -248287,10 +248726,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -248302,6 +248757,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -248312,6 +248771,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -248321,63 +248790,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -248403,10 +248842,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -248418,6 +248874,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -248428,6 +248893,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -248437,64 +248912,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -248520,13 +248964,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -248535,8 +248999,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -248545,11 +249009,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -248559,62 +249018,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -248640,6 +249070,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -248651,6 +249111,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -248660,66 +249130,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -248745,6 +249182,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -248756,6 +249211,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -248765,6 +249230,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -248775,190 +249253,608 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "value": { - "type": "string" + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", + ], "nullable": true } - } + }, + "nullable": true }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -248969,159 +249865,66 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] } } - }, + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "An extruded arc.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, "type": { "type": "string", "enum": [ - "extrudeArc" + "fillet" ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -249129,81 +249932,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -249211,608 +249952,95 @@ "format": "uint8", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - } - ] - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + } }, - "tag": { - "description": "The tag.", + { + "description": "A chamfer.", "type": "object", "required": [ - "end", - "start", - "value" + "edgeId", + "id", + "length", + "type" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "type": { + "type": "string", + "enum": [ + "chamfer" + ] }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "id": { + "description": "The id of the engine command that called this chamfer.", + "type": "string", + "format": "uuid" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "length": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" + }, + "tag": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] + } } - } - }, - { - "description": "Geometry metadata.", + ] + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -249823,92 +250051,21 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } - ], - "nullable": true + } } }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { + "__meta": { + "type": "array", + "items": { "description": "Metadata.", "type": "object", "required": [ - "id", "sourceRange" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -249921,744 +250078,587 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] } } + } + } + ] + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } + "maxItems": 2, + "minItems": 2 } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" }, - { - "description": "A path that is horizontal.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" + "id", + "sketch" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { + "id": { + "description": "The id of the tagged object.", "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "format": "uuid" }, - "type": { + "sketch": { + "description": "The sketch the tag is on.", "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "format": "uuid" }, - "tag": { - "description": "The tag of the path.", + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } @@ -250856,255 +250856,887 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "id": { - "description": "The id of the engine command that called this fillet.", + "description": "The id of the geometry.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } }, - "tag": { + { + "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" ], "properties": { - "digest": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "value": { - "type": "string" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" + } }, - "tag": { + { + "description": "a complete arc", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" ], "properties": { - "digest": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "value": { - "type": "string" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true + } }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -251118,41 +251750,251 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -251173,6 +252015,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -251241,23 +252106,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -251280,22 +252129,34 @@ } } } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "$ref": "#/components/schemas/Solid" - }, + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "face" ] }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, "value": { "description": "The tag of the face.", "type": "string" @@ -251368,6 +252229,33 @@ "format": "double" } } + }, + "solid": { + "description": "The solid the face is on.", + "$ref": "#/components/schemas/Solid" + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } @@ -251382,32 +252270,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -251418,6 +252280,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -251427,42 +252299,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -251476,28 +252364,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -251512,6 +252380,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -251521,32 +252394,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -251557,6 +252404,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -251566,51 +252423,62 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { "type": "integer", - "format": "uint8", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "maxItems": 2, + "minItems": 2 } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -251624,27 +252492,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -251654,38 +252512,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -251699,27 +252567,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -251729,38 +252587,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -251774,27 +252642,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -251804,38 +252662,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -251849,27 +252717,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -251879,881 +252737,163 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -252761,81 +252901,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -252846,64 +252924,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -252911,81 +252968,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -252996,33 +252991,38 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } @@ -253062,28 +253062,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -253098,6 +253078,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -253107,32 +253092,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -253143,6 +253102,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -253152,51 +253121,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -253210,27 +253190,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -253240,38 +253210,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -253285,27 +253265,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -253315,38 +253285,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -253360,27 +253340,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -253390,38 +253360,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -253435,27 +253415,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -253465,38 +253435,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -253506,8 +253486,28 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } @@ -253537,34 +253537,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -253588,32 +253591,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -253682,23 +253659,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -253721,78 +253682,152 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, - "solid": { - "description": "The solid the face is on.", + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", "type": "object", "required": [ - "__meta", - "height", - "id", - "sketch", - "value" + "x", + "y", + "z" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "type": "object", + "required": [ + "__meta", + "height", + "id", + "sketch", + "value" + ], + "properties": { + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -253800,73 +253835,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -253877,936 +253858,271 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "solid": { - "description": "The solid the face is on.", - "$ref": "#/components/schemas/Solid" - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - } - } - } - ] - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "format": "uuid" }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -254824,6 +254140,68 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -254849,6 +254227,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -254860,6 +254272,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -254869,63 +254291,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -254951,10 +254343,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -254966,6 +254374,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -254976,6 +254388,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -254985,63 +254407,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -255067,10 +254459,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -255082,6 +254491,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -255092,6 +254510,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -255101,64 +254529,139 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, { - "description": "a complete arc", + "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", - "ccw", - "center", "from", - "radius", "to", - "type" + "type", + "x" ], "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -255184,13 +254687,39 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true }, - "center": { - "description": "the arc's center", + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -255199,8 +254728,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -255209,11 +254738,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -255223,6 +254747,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -255233,65 +254770,290 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "end": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plane" + ] + }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { + }, + "xAxis": { + "description": "What should the plane’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the plane’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "__meta": { + "type": "array", + "items": { "description": "Metadata.", "type": "object", "required": [ - "id", "sourceRange" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -255304,99 +255066,121 @@ "minItems": 2 } } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { + } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } + "y": { + "type": "number", + "format": "double" }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "solid": { + "description": "The solid the face is on.", + "$ref": "#/components/schemas/Solid" + }, + "__meta": { + "type": "array", + "items": { "description": "Metadata.", "type": "object", "required": [ - "id", "sourceRange" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -255409,295 +255193,575 @@ "minItems": 2 } } + } + } + } + } + ] + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } + "maxItems": 2, + "minItems": 2 } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" }, - { - "description": "A base path.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "id", + "sketch" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "id", - "sourceRange" + "__geoMeta", + "from", + "to" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + }, + "to": { + "description": "The to point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - }, - { - "description": "An extruded arc.", + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", - "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, "sourceRange": { "description": "The source range.", "type": "array", @@ -255708,84 +255772,66 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } - }, + } + } + } + }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, + "startCapId": { + "description": "The id of the extrusion start cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", + "type": "array", + "items": { + "description": "A fillet or a chamfer.", + "oneOf": [ { - "description": "Geometry metadata.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -255793,74 +255839,66 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -255868,122 +255906,84 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -256054,13 +256054,13 @@ "radius" ], "properties": { - "offset": { - "description": "Offset of the arc, in degrees.", + "radius": { + "description": "Radius of the arc. Not to be confused with Raiders of the Lost Ark.", "type": "number", "format": "double" }, - "radius": { - "description": "Radius of the arc. Not to be confused with Raiders of the Lost Ark.", + "offset": { + "description": "Offset of the arc, in degrees.", "type": "number", "format": "double" } @@ -256084,35 +256084,792 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", "type": "array", "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -256130,34 +256887,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -256181,32 +256941,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -256275,23 +257009,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -256314,12 +257032,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -256331,785 +257144,335 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", "type": "object", "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -257127,6 +257490,68 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -257152,6 +257577,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -257163,6 +257622,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -257172,63 +257641,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -257254,10 +257693,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -257269,6 +257724,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -257279,6 +257738,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -257288,63 +257757,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -257370,10 +257809,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -257385,6 +257841,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -257395,6 +257860,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -257404,64 +257879,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -257487,13 +257931,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -257502,8 +257966,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -257512,11 +257976,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -257526,62 +257985,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -257607,6 +258037,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -257618,6 +258078,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -257627,66 +258097,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -257712,6 +258149,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -257723,6 +258178,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -257732,213 +258197,701 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } + "maxItems": 2, + "minItems": 2 } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" }, - { - "description": "A base path.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "id", + "sketch" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "id", - "sourceRange" + "__geoMeta", + "from", + "to" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + }, + "to": { + "description": "The to point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 32, - "minItems": 32, "nullable": true }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "start": { + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -257946,81 +258899,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -258031,64 +258922,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -258096,81 +258966,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -258181,112 +258989,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -258303,32 +259060,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -258339,6 +259070,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -258348,6 +259089,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -258358,32 +259112,35 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } } } }, @@ -258397,28 +259154,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -258433,6 +259170,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -258442,32 +259184,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -258478,6 +259194,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -258487,51 +259213,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -258545,27 +259282,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -258575,38 +259302,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -258620,27 +259357,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -258650,38 +259377,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -258695,27 +259432,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -258725,38 +259452,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -258770,27 +259507,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -258800,832 +259527,105 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", "nullable": true } - } + }, + "nullable": true }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } @@ -259643,29 +259643,29 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true @@ -259687,35 +259687,792 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", "type": "array", "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -259733,34 +260490,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -259784,32 +260544,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -259878,23 +260612,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -259917,12 +260635,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -259934,61 +260747,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -259996,66 +260788,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -260063,81 +260863,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -260150,569 +260907,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -260730,6 +261093,68 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -260755,6 +261180,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -260766,6 +261225,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -260775,63 +261244,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -260857,10 +261296,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -260872,6 +261327,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -260882,6 +261341,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -260891,63 +261360,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -260973,10 +261412,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -260988,6 +261444,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -260998,6 +261463,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -261007,64 +261482,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -261090,13 +261534,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -261105,8 +261569,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -261115,11 +261579,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -261129,62 +261588,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -261210,6 +261640,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -261221,6 +261681,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -261230,66 +261700,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -261315,6 +261752,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -261326,6 +261781,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -261335,6 +261800,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -261345,203 +261823,678 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "value": { - "type": "string" + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", + ], "nullable": true } - } + }, + "nullable": true }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -261549,81 +262502,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -261634,64 +262525,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -261699,81 +262569,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -261784,112 +262592,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -261906,32 +262663,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -261942,6 +262673,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -261951,42 +262692,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -262000,28 +262757,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -262036,6 +262773,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -262045,32 +262787,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -262081,6 +262797,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -262090,51 +262816,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -262148,27 +262885,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -262178,38 +262905,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -262223,27 +262960,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -262253,38 +262980,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -262298,27 +263035,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -262328,38 +263055,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -262373,27 +263110,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -262403,38 +263130,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -262444,892 +263181,768 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle: 60, length: 10 }, %)\n |> tangentialArc({ radius: 10, offset: -120 }, %)\n |> angledLine({ angle: -60, length: 10 }, %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" + ] + }, + { + "name": "tangentialArcTo", + "summary": "Starting at the current sketch's origin, draw a curved line segment along", + "description": "some part of an imaginary circle until it reaches the desired (x, y) coordinates.", + "tags": [], + "args": [ + { + "name": "to", + "type": "[number]", + "schema": { + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "required": true + }, + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle: 60, length: 10 }, %)\n |> tangentialArc({ radius: 10, offset: -120 }, %)\n |> angledLine({ angle: -60, length: 10 }, %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" - ] - }, - { - "name": "tangentialArcTo", - "summary": "Starting at the current sketch's origin, draw a curved line segment along", - "description": "some part of an imaginary circle until it reaches the desired (x, y) coordinates.", - "tags": [], - "args": [ - { - "name": "to", - "type": "[number]", - "schema": { - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "required": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -263343,41 +263956,139 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -263398,6 +264109,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -263466,23 +264200,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -263505,12 +264223,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -263522,61 +264335,115 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -263584,66 +264451,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -263651,6 +264526,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -263661,50 +264549,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -263716,608 +264660,89 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "ToPoint" + ] }, - "path": { - "description": "The path the tag is on.", + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -264343,6 +264768,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -264354,6 +264813,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -264363,63 +264832,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -264445,10 +264884,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -264460,6 +264915,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -264470,6 +264929,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -264479,63 +264948,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "nullable": true }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -264561,10 +265000,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -264576,6 +265032,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -264586,6 +265051,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -264595,64 +265070,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -264678,13 +265122,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -264693,8 +265157,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -264703,11 +265167,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -264717,62 +265176,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -264798,6 +265228,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -264809,6 +265269,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -264818,66 +265288,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -264903,6 +265340,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -264914,6 +265369,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -264923,73 +265388,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -265015,121 +265440,649 @@ "minItems": 2 } } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -265137,81 +266090,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -265222,64 +266113,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -265287,81 +266157,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -265372,112 +266180,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -265494,32 +266251,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -265530,6 +266261,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -265539,42 +266280,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -265588,28 +266345,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -265624,6 +266361,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -265633,32 +266375,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -265669,6 +266385,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -265678,51 +266404,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -265736,27 +266473,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -265766,38 +266493,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -265811,27 +266548,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -265841,38 +266568,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -265886,27 +266623,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -265916,38 +266643,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -265961,27 +266698,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -265991,38 +266718,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -266032,881 +266769,901 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + } + } + }, + "required": true + }, + { + "name": "tag", + "type": "TagDeclarator", + "schema": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, "value": { - "description": "The paths in the sketch.", + "type": "string" + }, + "digest": { "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "required": false + } + ], + "returnValue": { + "name": "", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "radius": { - "description": "the arc's radius", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true + "format": "double" }, - "y": { - "description": "The y coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] - } - } - } - }, - "required": true - }, - { - "name": "tag", - "type": "TagDeclarator", - "schema": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "required": false - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -266924,34 +267681,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -266975,32 +267735,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -267069,23 +267803,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -267108,12 +267826,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -267125,61 +267938,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -267187,66 +267979,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -267254,81 +268054,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -267341,569 +268098,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, + "maxItems": 32, + "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -267921,6 +268284,68 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -267946,6 +268371,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -267957,6 +268416,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -267966,63 +268435,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -268048,10 +268487,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -268063,6 +268518,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -268073,6 +268532,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -268082,63 +268551,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -268164,10 +268603,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -268179,6 +268635,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -268189,6 +268654,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -268198,64 +268673,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -268281,13 +268725,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -268296,8 +268760,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -268306,11 +268770,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -268320,62 +268779,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -268401,6 +268831,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -268412,6 +268872,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -268421,66 +268891,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -268506,6 +268943,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -268517,6 +268972,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -268526,73 +268991,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -268618,121 +269043,649 @@ "minItems": 2 } } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -268740,81 +269693,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -268825,64 +269716,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -268890,81 +269760,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -268975,112 +269783,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -269097,32 +269854,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -269133,6 +269864,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -269142,42 +269883,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -269191,28 +269948,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -269227,6 +269964,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -269236,32 +269978,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -269272,6 +269988,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -269281,51 +270007,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -269339,27 +270076,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -269369,38 +270096,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -269414,27 +270151,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -269444,38 +270171,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -269489,27 +270226,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -269519,38 +270246,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -269564,27 +270301,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -269594,38 +270321,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -269635,866 +270372,886 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle: 60, length: 10 }, %)\n |> tangentialArcTo([15, 15], %)\n |> line([10, -15], %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" + ] + }, + { + "name": "tangentialArcToRelative", + "summary": "Starting at the current sketch's origin, draw a curved line segment along", + "description": "some part of an imaginary circle until it reaches a point the given (x, y) distance away.", + "tags": [], + "args": [ + { + "name": "delta", + "type": "[number]", + "schema": { + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "required": true + }, + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle: 60, length: 10 }, %)\n |> tangentialArcTo([15, 15], %)\n |> line([10, -15], %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" - ] - }, - { - "name": "tangentialArcToRelative", - "summary": "Starting at the current sketch's origin, draw a curved line segment along", - "description": "some part of an imaginary circle until it reaches a point the given (x, y) distance away.", - "tags": [], - "args": [ - { - "name": "delta", - "type": "[number]", - "schema": { - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "required": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -270512,34 +271269,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -270563,32 +271323,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -270657,23 +271391,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -270696,12 +271414,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -270713,61 +271526,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -270775,66 +271567,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -270842,81 +271642,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -270929,569 +271686,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -271509,6 +271872,68 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -271534,6 +271959,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -271545,6 +272004,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -271554,63 +272023,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -271636,10 +272075,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -271651,6 +272106,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -271661,6 +272120,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -271670,63 +272139,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -271752,10 +272191,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -271767,6 +272223,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -271777,6 +272242,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -271786,64 +272261,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -271869,13 +272313,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -271884,8 +272348,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -271894,11 +272358,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -271908,62 +272367,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -271989,6 +272419,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -272000,6 +272460,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -272009,66 +272479,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -272094,6 +272531,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -272105,6 +272560,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -272114,6 +272579,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -272124,203 +272602,678 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "value": { - "type": "string" + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", + ], "nullable": true } - } + }, + "nullable": true }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -272328,81 +273281,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -272413,64 +273304,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -272478,81 +273348,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -272563,112 +273371,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -272685,32 +273442,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -272721,6 +273452,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -272730,42 +273471,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -272779,28 +273536,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -272815,6 +273552,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -272824,32 +273566,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -272860,6 +273576,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -272869,51 +273595,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -272927,11 +273664,53 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, "faceId": { "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "id": { "description": "The id of the geometry.", "type": "string", @@ -272947,48 +273726,6 @@ }, "maxItems": 2, "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] } } }, @@ -273002,27 +273739,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -273032,38 +273759,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -273077,27 +273814,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -273107,38 +273834,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -273152,27 +273889,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -273182,38 +273909,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -273223,791 +273960,54 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } @@ -274025,29 +274025,29 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true @@ -274069,61 +274069,102 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -274137,41 +274178,711 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -274192,6 +274903,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -274260,23 +274994,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -274299,11 +275017,106 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] + }, + "id": { + "description": "The id of the face.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } }, "solid": { "description": "The solid the face is on.", @@ -274316,61 +275129,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -274378,6 +275170,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -274388,56 +275193,126 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -274445,6 +275320,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -274455,50 +275343,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -274510,608 +275454,205 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "ToPoint" + ] }, - "path": { - "description": "The path the tag is on.", + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } - ], - "nullable": true + } } - }, - "nullable": true + } }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ { - "description": "A path that goes to a point.", + "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", + "ccw", + "center", "from", "to", "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -275137,6 +275678,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -275148,6 +275723,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -275157,63 +275742,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -275239,10 +275794,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -275254,6 +275826,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -275264,6 +275845,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -275273,63 +275864,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -275355,13 +275916,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -275370,8 +275951,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -275389,64 +275970,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -275472,13 +276022,39 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true }, - "center": { - "description": "the arc's center", + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -275487,8 +276063,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -275497,11 +276073,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -275511,62 +276082,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -275592,6 +276134,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -275603,6 +276163,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -275612,66 +276182,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -275696,234 +276233,650 @@ "maxItems": 2, "minItems": 2 } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", "nullable": true } - } + }, + "nullable": true }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -275931,81 +276884,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -276016,64 +276907,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -276081,81 +276951,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -276166,112 +276974,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -276288,32 +277045,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -276324,6 +277055,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -276333,42 +277074,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -276382,28 +277139,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -276418,6 +277155,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -276427,32 +277169,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -276463,6 +277179,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -276472,51 +277198,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -276530,27 +277267,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -276560,38 +277287,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -276605,27 +277342,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -276635,38 +277362,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -276680,27 +277417,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -276710,38 +277437,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -276755,27 +277492,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -276785,38 +277512,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -276826,976 +277563,852 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle: 45, length: 10 }, %)\n |> tangentialArcToRelative([0, -10], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" + ] + }, + { + "name": "tau", + "summary": "Return the value of `tau`. The full circle constant (τ). Equal to 2π.", + "description": "", + "tags": [ + "math" + ], + "args": [], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle: 50, length: 10 * tau() }, %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" + ] + }, + { + "name": "toDegrees", + "summary": "Converts a number from radians to degrees.", + "description": "", + "tags": [ + "math" + ], + "args": [ + { + "name": "num", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle: 50,\n length: 70 * cos(toDegrees(pi() / 4))\n }, %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" + ] + }, + { + "name": "toRadians", + "summary": "Converts a number from degrees to radians.", + "description": "", + "tags": [ + "math" + ], + "args": [ + { + "name": "num", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + } + ], + "returnValue": { + "name": "", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle: 50,\n length: 70 * cos(toRadians(45))\n }, %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" + ] + }, + { + "name": "xLine", + "summary": "Draw a line relative to the current origin to a specified distance away", + "description": "from the current position along the 'x' axis.", + "tags": [], + "args": [ + { + "name": "length", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle: 45, length: 10 }, %)\n |> tangentialArcToRelative([0, -10], %)\n |> line([-10, 0], %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" - ] - }, - { - "name": "tau", - "summary": "Return the value of `tau`. The full circle constant (τ). Equal to 2π.", - "description": "", - "tags": [ - "math" - ], - "args": [], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> angledLine({ angle: 50, length: 10 * tau() }, %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "toDegrees", - "summary": "Converts a number from radians to degrees.", - "description": "", - "tags": [ - "math" - ], - "args": [ - { - "name": "num", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle: 50,\n length: 70 * cos(toDegrees(pi() / 4))\n }, %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "toRadians", - "summary": "Converts a number from degrees to radians.", - "description": "", - "tags": [ - "math" - ], - "args": [ - { - "name": "num", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn(\"XZ\")\n |> startProfileAt([0, 0], %)\n |> angledLine({\n angle: 50,\n length: 70 * cos(toRadians(45))\n }, %)\n |> yLineTo(0, %)\n |> close(%)\n\nconst example = extrude(5, exampleSketch)" - ] - }, - { - "name": "xLine", - "summary": "Draw a line relative to the current origin to a specified distance away", - "description": "from the current position along the 'x' axis.", - "tags": [], - "args": [ - { - "name": "length", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "__meta": { - "type": "array", - "items": { + "__geoMeta": { "description": "Metadata.", "type": "object", "required": [ + "id", "sourceRange" ], "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -277809,41 +278422,139 @@ } } } - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "origin": { - "description": "Origin of the plane.", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "y": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "z": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "oneOf": [ + { + "description": "A plane.", + "type": "object", + "required": [ + "__meta", + "id", + "origin", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { "type": { "type": "string", "enum": [ "plane" ] }, + "id": { + "description": "The id of the plane.", + "type": "string", + "format": "uuid" + }, "value": { "description": "Type for a plane.", "oneOf": [ @@ -277864,6 +278575,29 @@ } ] }, + "origin": { + "description": "Origin of the plane.", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -277932,23 +278666,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -277971,12 +278689,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -277988,61 +278801,115 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -278050,66 +278917,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -278117,6 +278992,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -278127,50 +279015,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -278182,608 +279126,89 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "ToPoint" + ] }, - "path": { - "description": "The path the tag is on.", + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -278809,6 +279234,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -278820,6 +279279,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -278829,63 +279298,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -278911,10 +279350,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -278926,6 +279381,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -278936,72 +279395,52 @@ "maxItems": 2, "minItems": 2 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -279027,10 +279466,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -279042,6 +279498,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -279052,6 +279517,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -279061,64 +279536,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -279144,13 +279588,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -279159,8 +279623,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -279169,11 +279633,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -279183,62 +279642,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -279264,6 +279694,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -279275,6 +279735,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -279284,66 +279754,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -279369,6 +279806,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -279380,6 +279835,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -279389,73 +279854,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -279481,121 +279906,649 @@ "minItems": 2 } } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -279603,81 +280556,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -279688,64 +280579,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -279753,81 +280623,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -279838,112 +280646,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -279960,32 +280717,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -279996,6 +280727,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -280005,42 +280746,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -280054,28 +280811,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -280090,6 +280827,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -280099,32 +280841,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -280135,6 +280851,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -280144,51 +280870,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -280202,27 +280939,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -280232,38 +280959,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -280277,27 +281014,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -280307,38 +281034,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -280352,27 +281089,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -280382,38 +281109,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -280427,27 +281164,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -280457,38 +281184,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -280496,883 +281233,903 @@ "nullable": true } }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + { + "name": "tag", + "type": "TagDeclarator", + "schema": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "required": false + } + ], + "returnValue": { + "name": "", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "radius": { - "description": "the arc's radius", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true + "format": "double" }, - "y": { - "description": "The y coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] - } - } - } - }, - "required": true - }, - { - "name": "tag", - "type": "TagDeclarator", - "schema": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "required": false - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -281390,34 +282147,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -281441,32 +282201,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -281535,23 +282269,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -281574,12 +282292,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -281591,61 +282404,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -281653,66 +282445,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -281720,81 +282520,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -281807,569 +282564,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" }, - "info": { - "description": "Engine information for a tag.", + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -282387,6 +282750,68 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -282412,6 +282837,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -282423,6 +282882,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -282432,63 +282901,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -282514,10 +282953,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -282529,6 +282984,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -282539,6 +282998,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -282548,63 +283017,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -282630,10 +283069,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -282645,6 +283101,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -282655,6 +283120,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -282664,64 +283139,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -282747,13 +283191,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -282762,8 +283226,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -282772,11 +283236,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -282786,62 +283245,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -282867,6 +283297,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -282878,6 +283338,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -282887,66 +283357,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -282972,6 +283409,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -282983,6 +283438,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -282992,73 +283457,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -283084,121 +283509,649 @@ "minItems": 2 } } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -283206,81 +284159,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -283291,64 +284182,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -283356,81 +284226,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -283438,115 +284246,64 @@ "format": "uint8", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -283563,32 +284320,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -283599,6 +284330,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -283608,42 +284349,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -283657,28 +284414,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -283693,6 +284430,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -283702,32 +284444,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -283738,6 +284454,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -283747,51 +284473,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -283805,27 +284542,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -283835,38 +284562,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -283880,27 +284617,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -283910,38 +284637,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -283955,27 +284692,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -283985,38 +284712,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -284030,27 +284767,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -284060,38 +284787,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -284101,861 +284838,881 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> xLine(15, %)\n |> angledLine({ angle: 80, length: 15 }, %)\n |> line([8, -10], %)\n |> xLine(10, %)\n |> angledLine({ angle: 120, length: 30 }, %)\n |> xLine(-15, %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" + ] + }, + { + "name": "xLineTo", + "summary": "Draw a line parallel to the X axis, that ends at the given X.", + "description": "E.g. if the previous line ended at (1, 1), then xLineTo(4) draws a line from (1, 1) to (4, 1)", + "tags": [], + "args": [ + { + "name": "to", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> xLine(15, %)\n |> angledLine({ angle: 80, length: 15 }, %)\n |> line([8, -10], %)\n |> xLine(10, %)\n |> angledLine({ angle: 120, length: 30 }, %)\n |> xLine(-15, %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" - ] - }, - { - "name": "xLineTo", - "summary": "Draw a line parallel to the X axis, that ends at the given X.", - "description": "E.g. if the previous line ended at (1, 1), then xLineTo(4) draws a line from (1, 1) to (4, 1)", - "tags": [], - "args": [ - { - "name": "to", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -284973,34 +285730,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -285024,32 +285784,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -285118,23 +285852,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -285157,12 +285875,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -285174,785 +285987,335 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", "type": "object", "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -285970,6 +286333,68 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -285995,6 +286420,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -286006,6 +286465,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -286015,63 +286484,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -286097,10 +286536,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -286112,6 +286567,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -286122,6 +286581,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -286131,63 +286600,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -286213,10 +286652,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -286228,6 +286684,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -286238,6 +286703,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -286247,64 +286722,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -286330,13 +286774,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -286345,8 +286809,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -286355,11 +286819,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -286369,62 +286828,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -286450,6 +286880,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -286461,6 +286921,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -286470,66 +286940,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -286555,6 +286992,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -286566,6 +287021,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -286575,213 +287040,701 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - { - "description": "A base path.", + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "id", + "sketch" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "id", - "sourceRange" + "__geoMeta", + "from", + "to" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + }, + "to": { + "description": "The to point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 32, - "minItems": 32, "nullable": true }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "start": { + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -286789,81 +287742,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -286874,64 +287765,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -286939,81 +287809,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -287024,112 +287832,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -287146,32 +287903,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -287182,6 +287913,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -287191,42 +287932,58 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { "type": "integer", - "format": "uint8", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "maxItems": 2, + "minItems": 2 } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } } } }, @@ -287240,28 +287997,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -287276,6 +288013,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -287285,32 +288027,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -287321,6 +288037,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -287330,51 +288056,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -287388,27 +288125,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -287418,38 +288145,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -287463,27 +288200,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -287493,38 +288220,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -287538,27 +288275,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -287568,38 +288295,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -287613,27 +288350,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -287643,832 +288370,105 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", "nullable": true } - } + }, + "nullable": true }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } @@ -288486,29 +288486,29 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true @@ -288530,35 +288530,792 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", "type": "array", "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -288576,34 +289333,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -288627,32 +289387,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -288721,23 +289455,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -288760,12 +289478,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -288777,61 +289590,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -288839,66 +289631,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -288906,81 +289706,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -288993,569 +289750,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "chamfer" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -289573,6 +289936,68 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -289598,6 +290023,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -289609,6 +290068,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -289618,63 +290087,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -289700,10 +290139,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -289715,6 +290170,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -289725,6 +290184,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -289734,63 +290203,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -289816,10 +290255,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -289831,6 +290287,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -289841,6 +290306,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -289850,64 +290325,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -289933,13 +290377,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -289948,8 +290412,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -289958,11 +290422,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -289972,62 +290431,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -290053,6 +290483,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -290064,6 +290524,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -290073,66 +290543,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -290158,6 +290595,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -290169,6 +290624,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -290178,6 +290643,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -290188,203 +290666,678 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "value": { - "type": "string" + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", + ], "nullable": true } - } + }, + "nullable": true }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -290392,81 +291345,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -290477,64 +291368,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -290542,81 +291412,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -290627,112 +291435,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -290749,32 +291506,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -290785,6 +291516,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -290794,42 +291535,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -290843,28 +291600,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -290879,6 +291616,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -290888,32 +291630,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -290924,6 +291640,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -290933,69 +291659,41 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", + "__geoMeta": { + "description": "Metadata.", "type": "object", "required": [ - "faceId", "id", - "sourceRange", - "type" + "sourceRange" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, "id": { "description": "The id of the geometry.", "type": "string", @@ -291011,6 +291709,35 @@ }, "maxItems": 2, "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" }, "tag": { "description": "The tag.", @@ -291021,38 +291748,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -291066,27 +291803,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -291096,38 +291823,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -291141,27 +291878,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -291171,38 +291898,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -291216,27 +291953,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -291246,38 +291973,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -291287,861 +292024,881 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> xLineTo(15, %)\n |> angledLine({ angle: 80, length: 15 }, %)\n |> line([8, -10], %)\n |> xLineTo(40, %)\n |> angledLine({ angle: 135, length: 30 }, %)\n |> xLineTo(10, %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" + ] + }, + { + "name": "yLine", + "summary": "Draw a line relative to the current origin to a specified distance away", + "description": "from the current position along the 'y' axis.", + "tags": [], + "args": [ + { + "name": "length", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> xLineTo(15, %)\n |> angledLine({ angle: 80, length: 15 }, %)\n |> line([8, -10], %)\n |> xLineTo(40, %)\n |> angledLine({ angle: 135, length: 30 }, %)\n |> xLineTo(10, %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" - ] - }, - { - "name": "yLine", - "summary": "Draw a line relative to the current origin to a specified distance away", - "description": "from the current position along the 'y' axis.", - "tags": [], - "args": [ - { - "name": "length", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -292159,34 +292916,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -292210,32 +292970,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -292304,23 +293038,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -292343,12 +293061,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -292360,61 +293173,115 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -292422,66 +293289,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "Geometry metadata.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -292489,6 +293364,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -292499,50 +293387,106 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } ] } }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, "sketch": { "description": "The sketch.", "type": "object", @@ -292554,608 +293498,89 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes.", "type": "string", "format": "uuid" }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", "type": "object", "required": [ - "id", - "sketch" + "__geoMeta", + "from", + "to", + "type" ], "properties": { - "id": { - "description": "The id of the tagged object.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "ToPoint" + ] }, - "path": { - "description": "The path the tag is on.", + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", "type": "object", "required": [ - "__geoMeta", - "from", - "to" + "end", + "start", + "value" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true + "value": { + "type": "string" }, - "to": { - "description": "The to point.", + "digest": { "type": "array", "items": { - "type": "number", - "format": "double" + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -293181,6 +293606,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -293192,6 +293651,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -293201,63 +293670,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -293283,10 +293722,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -293298,6 +293753,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -293308,72 +293767,52 @@ "maxItems": 2, "minItems": 2 }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -293399,10 +293838,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -293414,6 +293870,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -293424,6 +293889,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -293433,64 +293908,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -293516,13 +293960,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -293531,8 +293995,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -293541,11 +294005,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -293555,62 +294014,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -293636,6 +294066,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -293647,6 +294107,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -293656,66 +294126,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -293741,6 +294178,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -293752,6 +294207,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -293761,73 +294226,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -293853,121 +294278,649 @@ "minItems": 2 } } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -293975,81 +294928,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -294060,64 +294951,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -294125,81 +294995,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -294210,112 +295018,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -294332,32 +295089,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -294368,6 +295099,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -294377,42 +295118,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -294426,28 +295183,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -294462,6 +295199,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -294471,32 +295213,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -294507,6 +295223,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -294516,51 +295242,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -294574,27 +295311,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -294604,38 +295331,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -294649,27 +295386,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -294679,38 +295406,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -294724,27 +295461,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -294754,38 +295481,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -294799,27 +295536,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -294829,38 +295556,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -294868,883 +295605,903 @@ "nullable": true } }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + { + "name": "tag", + "type": "TagDeclarator", + "schema": { + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "required": false + } + ], + "returnValue": { + "name": "", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "radius": { - "description": "the arc's radius", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] + "maxItems": 2, + "minItems": 2 + } } } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true + "format": "double" }, - "y": { - "description": "The y coordinate.", + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } + "format": "double" }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { "type": "integer", - "format": "uint", + "format": "uint8", "minimum": 0.0 }, - "start": { + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] - } - } - } - }, - "required": true - }, - { - "name": "tag", - "type": "TagDeclarator", - "schema": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "required": false - } - ], - "returnValue": { - "name": "", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -295762,34 +296519,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -295813,32 +296573,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -295907,23 +296641,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -295946,12 +296664,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -295963,61 +296776,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -296025,66 +296817,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -296092,81 +296892,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -296179,569 +296936,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" }, - "info": { - "description": "Engine information for a tag.", + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" + "value": { + "type": "string" }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -296759,6 +297122,68 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -296784,6 +297209,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -296795,6 +297254,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -296804,63 +297273,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -296886,10 +297325,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -296901,6 +297356,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -296911,6 +297370,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -296920,63 +297389,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -297002,10 +297441,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -297017,6 +297473,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -297027,6 +297492,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -297036,64 +297511,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -297119,13 +297563,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -297134,8 +297598,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -297144,11 +297608,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -297158,62 +297617,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -297239,6 +297669,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -297250,6 +297710,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -297259,66 +297729,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -297344,6 +297781,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -297355,6 +297810,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -297364,73 +297829,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -297456,121 +297881,649 @@ "minItems": 2 } } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "tag": { - "description": "The tag of the path.", + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "end", - "start", - "value" + "__geoMeta", + "from", + "to" ], "properties": { - "digest": { + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" }, - "maxItems": 32, - "minItems": 32, - "nullable": true + "maxItems": 2, + "minItems": 2 }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true }, - "value": { - "type": "string" + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -297578,81 +298531,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -297663,64 +298554,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -297728,81 +298598,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -297810,115 +298618,64 @@ "format": "uint8", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ] - } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + } + } + } + ] + } }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -297935,32 +298692,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -297971,6 +298702,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -297980,42 +298721,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -298029,28 +298786,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -298065,6 +298802,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -298074,32 +298816,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -298110,6 +298826,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -298119,51 +298845,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -298177,27 +298914,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -298207,38 +298934,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -298252,27 +298989,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -298282,38 +299009,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -298327,27 +299064,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -298357,38 +299084,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -298402,27 +299139,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -298432,38 +299159,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -298473,861 +299210,881 @@ }, "nullable": true }, - "value": { - "type": "string" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } } }, - "value": { - "description": "The paths in the sketch.", + "__meta": { + "description": "Metadata.", "type": "array", "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + }, + "required": true + }, + "unpublished": false, + "deprecated": false, + "examples": [ + "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> yLine(15, %)\n |> angledLine({ angle: 30, length: 15 }, %)\n |> line([8, -10], %)\n |> yLine(-5, %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" + ] + }, + { + "name": "yLineTo", + "summary": "Draw a line parallel to the Y axis, that ends at the given Y.", + "description": "E.g. if the previous line ended at (1, 1), then yLineTo(4) draws a line from (1, 1) to (1, 4)", + "tags": [], + "args": [ + { + "name": "to", + "type": "number", + "schema": { + "type": "number", + "format": "double" + }, + "required": true + }, + { + "name": "sketch", + "type": "Sketch", + "schema": { + "description": "A sketch is a collection of paths.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", + "type": "array", + "items": { + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "maxItems": 2, - "minItems": 2 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "value": { - "type": "string" - } + "maxItems": 2, + "minItems": 2 }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "ccw": { + "description": "arc's direction", + "type": "boolean" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", "format": "double" }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { + "x": { + "description": "The x coordinate.", "type": "number", - "format": "double" + "format": "double", + "nullable": true }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "value": { - "type": "string" + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] - } - } - } - ] - } - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const exampleSketch = startSketchOn('XZ')\n |> startProfileAt([0, 0], %)\n |> yLine(15, %)\n |> angledLine({ angle: 30, length: 15 }, %)\n |> line([8, -10], %)\n |> yLine(-5, %)\n |> close(%)\n\nconst example = extrude(10, exampleSketch)" - ] - }, - { - "name": "yLineTo", - "summary": "Draw a line parallel to the Y axis, that ends at the given Y.", - "description": "E.g. if the previous line ended at (1, 1), then yLineTo(4) draws a line from (1, 1) to (1, 4)", - "tags": [], - "args": [ - { - "name": "to", - "type": "number", - "schema": { - "type": "number", - "format": "double" - }, - "required": true - }, - { - "name": "sketch", - "type": "Sketch", - "schema": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -299345,34 +300102,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -299396,32 +300156,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -299490,23 +300224,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -299529,12 +300247,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -299546,785 +300359,335 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "tag": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + "value": { + "description": "The extrude surfaces.", + "type": "array", + "items": { + "description": "An extrude surface.", + "oneOf": [ + { + "description": "An extrude plane.", "type": "object", "required": [ - "__meta", - "value" - ], - "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } - }, - "info": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -300342,6 +300705,68 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -300367,6 +300792,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -300378,6 +300837,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -300387,63 +300856,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -300469,10 +300908,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -300484,6 +300939,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -300494,6 +300953,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -300503,63 +300972,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -300585,10 +301024,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -300600,6 +301056,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -300610,6 +301075,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -300619,64 +301094,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -300702,13 +301146,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -300717,8 +301181,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -300727,11 +301191,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -300741,62 +301200,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -300822,6 +301252,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -300833,6 +301293,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -300842,66 +301312,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -300927,6 +301364,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -300938,6 +301393,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -300947,213 +301412,701 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } + "maxItems": 2, + "minItems": 2 } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" }, - { - "description": "A base path.", + "info": { + "description": "Engine information for a tag.", "type": "object", "required": [ - "__geoMeta", - "from", - "to", - "type" + "id", + "sketch" ], "properties": { - "__geoMeta": { - "description": "Metadata.", + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", "type": "object", "required": [ - "id", - "sourceRange" + "__geoMeta", + "from", + "to" ], "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", + "from": { + "description": "The from point.", "type": "array", "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "type": "number", + "format": "double" }, "maxItems": 2, "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { + }, + "to": { + "description": "The to point.", "type": "array", "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "maxItems": 32, - "minItems": 32, "nullable": true }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "start": { + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + ], + "nullable": true + } + }, + "nullable": true + }, + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -301161,81 +302114,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -301246,64 +302137,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -301311,81 +302181,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -301396,112 +302204,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -301518,32 +302275,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -301554,6 +302285,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -301563,6 +302304,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -301573,32 +302327,35 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + } } } }, @@ -301612,28 +302369,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -301648,6 +302385,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -301657,32 +302399,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -301693,6 +302409,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -301702,51 +302428,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -301760,27 +302497,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -301790,38 +302517,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudePlane" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -301835,27 +302572,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -301865,38 +302592,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -301910,27 +302647,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -301940,38 +302667,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -301985,27 +302722,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -302015,832 +302742,105 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], - "nullable": true - } - }, - "nullable": true - }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", "nullable": true } - } + }, + "nullable": true }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } @@ -302858,29 +302858,29 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true @@ -302902,35 +302902,792 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" + }, + "value": { + "description": "The paths in the sketch.", "type": "array", "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "description": "A path.", + "oneOf": [ + { + "description": "A path that goes to a point.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } } - } + ] } }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, "on": { "description": "What the sketch is on (can be a plane or a face).", "oneOf": [ @@ -302948,34 +303705,37 @@ "zAxis" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "plane" + ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, + "value": { + "description": "Type for a plane.", + "oneOf": [ + { + "type": "string", + "enum": [ + "XY", + "XZ", + "YZ" + ] + }, + { + "description": "A custom plane.", + "type": "string", + "enum": [ + "Custom" + ] + } + ] + }, "origin": { "description": "Origin of the plane.", "type": "object", @@ -302999,32 +303759,6 @@ } } }, - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "value": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, "xAxis": { "description": "What should the plane’s X axis be?", "type": "object", @@ -303093,23 +303827,7 @@ "format": "double" } } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { + }, "__meta": { "type": "array", "items": { @@ -303132,12 +303850,107 @@ } } } + } + } + }, + { + "description": "A face.", + "type": "object", + "required": [ + "__meta", + "id", + "solid", + "type", + "value", + "xAxis", + "yAxis", + "zAxis" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "face" + ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, + "value": { + "description": "The tag of the face.", + "type": "string" + }, + "xAxis": { + "description": "What should the face’s X axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "yAxis": { + "description": "What should the face’s Y axis be?", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, + "zAxis": { + "description": "The z-axis (normal).", + "type": "object", + "required": [ + "x", + "y", + "z" + ], + "properties": { + "x": { + "type": "number", + "format": "double" + }, + "y": { + "type": "number", + "format": "double" + }, + "z": { + "type": "number", + "format": "double" + } + } + }, "solid": { "description": "The solid the face is on.", "type": "object", @@ -303149,61 +303962,40 @@ "value" ], "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "id": { + "description": "The id of the solid.", + "type": "string", + "format": "uuid" }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", + "value": { + "description": "The extrude surfaces.", "type": "array", "items": { - "description": "A fillet or a chamfer.", + "description": "An extrude surface.", "oneOf": [ { - "description": "A fillet.", + "description": "An extrude plane.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "radius", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to fillet.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the engine command that called this fillet.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "radius": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -303211,66 +304003,74 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, { - "description": "A chamfer.", + "description": "An extruded arc.", "type": "object", "required": [ - "edgeId", + "faceId", "id", - "length", + "sourceRange", "type" ], "properties": { - "edgeId": { - "description": "The engine id of the edge to chamfer.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the engine command that called this chamfer.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "length": { - "type": "number", - "format": "double" - }, "tag": { + "description": "The tag.", "type": "object", "required": [ "end", @@ -303278,81 +304078,38 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] - } - } - } - ] - } - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { + "format": "uuid" + }, "sourceRange": { "description": "The source range.", "type": "array", @@ -303365,569 +304122,175 @@ "minItems": 2 } } - } - }, - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "$ref": "#/components/schemas/SketchSurface" - }, - "start": { - "description": "The starting path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { + }, + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { + "end": { "type": "integer", - "format": "uint8", + "format": "uint", "minimum": 0.0 }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } }, - "start": { + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "maxItems": 2, + "minItems": 2 + } } - } - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { + }, + { + "description": "Geometry metadata.", "type": "object", "required": [ - "__meta", - "value" + "faceId", + "id", + "sourceRange", + "type" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "type": { + "type": "string", + "enum": [ + "fillet" + ] }, - "info": { - "description": "Engine information for a tag.", + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", "type": "object", "required": [ - "id", - "sketch" + "end", + "start", + "value" ], "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - } - }, - "nullable": true - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "surface": { - "description": "The surface information for the tag.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] - } - } - } - ], + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, "nullable": true } }, "nullable": true }, - "value": { - "type": "string" + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } + ] + } + }, + "sketch": { + "description": "The sketch.", + "type": "object", + "required": [ + "__meta", + "id", + "on", + "start", + "value" + ], + "properties": { + "id": { + "description": "The id of the sketch (this will change when the engine's reference to it changes.", + "type": "string", + "format": "uuid" }, "value": { "description": "The paths in the sketch.", @@ -303945,6 +304308,68 @@ "type" ], "properties": { + "type": { + "type": "string", + "enum": [ + "ToPoint" + ] + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, "__geoMeta": { "description": "Metadata.", "type": "object", @@ -303970,6 +304395,40 @@ "minItems": 2 } } + } + } + }, + { + "description": "A arc that is tangential to the last path segment that goes to a point", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArcTo" + ] + }, + "center": { + "description": "the arc's center", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" }, "from": { "description": "The from point.", @@ -303981,6 +304440,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -303990,63 +304459,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -304072,10 +304511,26 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "A arc that is tangential to the last path segment", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "TangentialArc" + ] }, "center": { "description": "the arc's center", @@ -304087,6 +304542,10 @@ "maxItems": 2, "minItems": 2 }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -304097,6 +304556,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -304106,63 +304575,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -304188,10 +304627,27 @@ "minItems": 2 } } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + } + } + }, + { + "description": "a complete arc", + "type": "object", + "required": [ + "__geoMeta", + "ccw", + "center", + "from", + "radius", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Circle" + ] }, "center": { "description": "the arc's center", @@ -304203,6 +304659,15 @@ "maxItems": 2, "minItems": 2 }, + "radius": { + "description": "the arc's radius", + "type": "number", + "format": "double" + }, + "ccw": { + "description": "arc's direction", + "type": "boolean" + }, "from": { "description": "The from point.", "type": "array", @@ -304213,6 +304678,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -304222,64 +304697,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -304305,13 +304749,33 @@ "minItems": 2 } } + } + } + }, + { + "description": "A path that is horizontal.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type", + "x" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Horizontal" + ] }, - "ccw": { - "description": "arc's direction", - "type": "boolean" + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double" }, - "center": { - "description": "the arc's center", + "from": { + "description": "The from point.", "type": "array", "items": { "type": "number", @@ -304320,8 +304784,8 @@ "maxItems": 2, "minItems": 2 }, - "from": { - "description": "The from point.", + "to": { + "description": "The to point.", "type": "array", "items": { "type": "number", @@ -304330,11 +304794,6 @@ "maxItems": 2, "minItems": 2 }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, "tag": { "description": "The tag of the path.", "type": "object", @@ -304344,62 +304803,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -304425,6 +304855,36 @@ "minItems": 2 } } + } + } + }, + { + "description": "An angled line to.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "AngledLineTo" + ] + }, + "x": { + "description": "The x coordinate.", + "type": "number", + "format": "double", + "nullable": true + }, + "y": { + "description": "The y coordinate.", + "type": "number", + "format": "double", + "nullable": true }, "from": { "description": "The from point.", @@ -304436,6 +304896,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -304445,66 +304915,33 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { "__geoMeta": { "description": "Metadata.", "type": "object", @@ -304530,6 +304967,24 @@ "minItems": 2 } } + } + } + }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "Base" + ] }, "from": { "description": "The from point.", @@ -304541,6 +304996,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -304550,6 +305015,19 @@ "value" ], "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, "digest": { "type": "array", "items": { @@ -304560,203 +305038,678 @@ "maxItems": 32, "minItems": 32, "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + } + ] + } + }, + "on": { + "description": "What the sketch is on (can be a plane or a face).", + "$ref": "#/components/schemas/SketchSurface" + }, + "start": { + "description": "The starting path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + } + }, + "tags": { + "description": "Tag identifiers that have been declared in this sketch.", + "type": "object", + "additionalProperties": { + "type": "object", + "required": [ + "__meta", + "value" + ], + "properties": { + "value": { + "type": "string" + }, + "info": { + "description": "Engine information for a tag.", + "type": "object", + "required": [ + "id", + "sketch" + ], + "properties": { + "id": { + "description": "The id of the tagged object.", + "type": "string", + "format": "uuid" + }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, + "path": { + "description": "The path the tag is on.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "to" + ], + "properties": { + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "tag": { + "description": "The tag of the path.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } + }, + "nullable": true + }, + "surface": { + "description": "The surface information for the tag.", + "oneOf": [ + { + "description": "An extrude plane.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudePlane" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "description": "An extruded arc.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "extrudeArc" + ] + }, + "faceId": { + "description": "The face id for the extrude plane.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "chamfer" + ] + }, + "faceId": { + "description": "The id for the chamfer surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } }, - "value": { - "type": "string" + { + "description": "Geometry metadata.", + "type": "object", + "required": [ + "faceId", + "id", + "sourceRange", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "fillet" + ] + }, + "faceId": { + "description": "The id for the fillet surface.", + "type": "string", + "format": "uuid" + }, + "tag": { + "description": "The tag.", + "type": "object", + "required": [ + "end", + "start", + "value" + ], + "properties": { + "start": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "end": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "value": { + "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true + } + }, + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", + ], "nullable": true } - } + }, + "nullable": true }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] + "maxItems": 2, + "minItems": 2 + } } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } }, + "height": { + "description": "The height of the solid.", + "type": "number", + "format": "double" + }, "startCapId": { "description": "The id of the extrusion start cap", "type": "string", "format": "uuid", "nullable": true }, - "value": { - "description": "The extrude surfaces.", + "endCapId": { + "description": "The id of the extrusion end cap", + "type": "string", + "format": "uuid", + "nullable": true + }, + "edgeCuts": { + "description": "Chamfers or fillets on this solid.", "type": "array", "items": { - "description": "An extrude surface.", + "description": "A fillet or a chamfer.", "oneOf": [ { - "description": "An extrude plane.", + "description": "A fillet.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "radius", "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this fillet.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "radius": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to fillet.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -304764,81 +305717,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -304849,64 +305740,43 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] } } }, { - "description": "Geometry metadata.", + "description": "A chamfer.", "type": "object", "required": [ - "faceId", + "edgeId", "id", - "sourceRange", + "length", "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, "id": { - "description": "The id of the geometry.", + "description": "The id of the engine command that called this chamfer.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 + "length": { + "type": "number", + "format": "double" + }, + "edgeId": { + "description": "The engine id of the edge to chamfer.", + "type": "string", + "format": "uuid" }, "tag": { - "description": "The tag.", "type": "object", "required": [ "end", @@ -304914,81 +305784,19 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" - } - }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { + }, "digest": { "type": "array", "items": { @@ -304999,112 +305807,61 @@ "maxItems": 32, "minItems": 32, "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" } }, "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "fillet" - ] } } } ] } - } - } - }, - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } + } } } }, - "zAxis": { - "description": "The z-axis (normal).", - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } } } } @@ -305121,32 +305878,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -305157,6 +305888,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -305166,42 +305907,58 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } }, @@ -305215,28 +305972,8 @@ "value" ], "properties": { - "__meta": { - "type": "array", - "items": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - } + "value": { + "type": "string" }, "info": { "description": "Engine information for a tag.", @@ -305251,6 +305988,11 @@ "type": "string", "format": "uuid" }, + "sketch": { + "description": "The sketch the tag is on.", + "type": "string", + "format": "uuid" + }, "path": { "description": "The path the tag is on.", "type": "object", @@ -305260,32 +306002,6 @@ "to" ], "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, "from": { "description": "The from point.", "type": "array", @@ -305296,6 +306012,16 @@ "maxItems": 2, "minItems": 2 }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, "tag": { "description": "The tag of the path.", "type": "object", @@ -305305,51 +306031,62 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 + "__geoMeta": { + "description": "Metadata.", + "type": "object", + "required": [ + "id", + "sourceRange" + ], + "properties": { + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } }, "nullable": true }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, "surface": { "description": "The surface information for the tag.", "oneOf": [ @@ -305363,27 +306100,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudePlane" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -305393,38 +306120,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, - "nullable": true - }, - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] + "nullable": true + }, + "id": { + "description": "The id of the geometry.", + "type": "string", + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -305438,27 +306175,17 @@ "type" ], "properties": { - "faceId": { - "description": "The face id for the extrude plane.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "extrudeArc" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The face id for the extrude plane.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -305468,38 +306195,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "extrudeArc" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -305513,27 +306250,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the chamfer surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "chamfer" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the chamfer surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -305543,38 +306270,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "chamfer" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } }, @@ -305588,27 +306325,17 @@ "type" ], "properties": { - "faceId": { - "description": "The id for the fillet surface.", + "type": { "type": "string", - "format": "uuid" + "enum": [ + "fillet" + ] }, - "id": { - "description": "The id of the geometry.", + "faceId": { + "description": "The id for the fillet surface.", "type": "string", "format": "uuid" }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, "tag": { "description": "The tag.", "type": "object", @@ -305618,38 +306345,48 @@ "value" ], "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { + "start": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "start": { + "end": { "type": "integer", "format": "uint", "minimum": 0.0 }, "value": { "type": "string" + }, + "digest": { + "type": "array", + "items": { + "type": "integer", + "format": "uint8", + "minimum": 0.0 + }, + "maxItems": 32, + "minItems": 32, + "nullable": true } }, "nullable": true }, - "type": { + "id": { + "description": "The id of the geometry.", "type": "string", - "enum": [ - "fillet" - ] + "format": "uuid" + }, + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 } } } @@ -305659,791 +306396,54 @@ }, "nullable": true }, - "value": { - "type": "string" - } - } - } - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Circle" - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { + "__meta": { + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "__geoMeta": { - "description": "Metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - } + "maxItems": 2, + "minItems": 2 } - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - } - }, - "nullable": true - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "type": { - "type": "string", - "enum": [ - "Base" - ] } } } - ] + } + } + }, + "__meta": { + "description": "Metadata.", + "type": "array", + "items": { + "description": "Metadata.", + "type": "object", + "required": [ + "sourceRange" + ], + "properties": { + "sourceRange": { + "description": "The source range.", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0.0 + }, + "maxItems": 2, + "minItems": 2 + } + } } } } diff --git a/docs/kcl/types/ArcData.md b/docs/kcl/types/ArcData.md index 2a9c76230e..12025c4bde 100644 --- a/docs/kcl/types/ArcData.md +++ b/docs/kcl/types/ArcData.md @@ -22,8 +22,8 @@ Angles and radius with an optional tag. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `angleEnd` |`number` (`double`)| The end angle. | No | | `angleStart` |`number` (`double`)| The start angle. | No | +| `angleEnd` |`number` (`double`)| The end angle. | No | | `radius` |`number` (`double`)| The radius. | No | @@ -41,8 +41,8 @@ Center, to and radius with an optional tag. | Property | Type | Description | Required | |----------|------|-------------|----------| | `center` |`array`| The center. | No | -| `radius` |`number` (`double`)| The radius. | No | | `to` |`array`| The to point. | No | +| `radius` |`number` (`double`)| The radius. | No | ---- diff --git a/docs/kcl/types/BezierData.md b/docs/kcl/types/BezierData.md index 05fb32bce8..6477cf4d02 100644 --- a/docs/kcl/types/BezierData.md +++ b/docs/kcl/types/BezierData.md @@ -16,8 +16,8 @@ Data to draw a bezier curve. | Property | Type | Description | Required | |----------|------|-------------|----------| +| `to` |`array`| The to point. | No | | `control1` |`array`| The first control point. | No | | `control2` |`array`| The second control point. | No | -| `to` |`array`| The to point. | No | diff --git a/docs/kcl/types/CircularPattern2dData.md b/docs/kcl/types/CircularPattern2dData.md index 91bbf1b32a..a9e2c04946 100644 --- a/docs/kcl/types/CircularPattern2dData.md +++ b/docs/kcl/types/CircularPattern2dData.md @@ -16,9 +16,9 @@ Data for a circular pattern on a 2D sketch. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `arcDegrees` |`number` (`double`)| The arc angle (in degrees) to place the repetitions. Must be greater than 0. | No | -| `center` |`array`| The center about which to make the pattern. This is a 2D vector. | No | | `repetitions` |`integer` (`uint32`)| The number of repetitions. Must be greater than 0. This excludes the original entity. For example, if `repetitions` is 1, the original entity will be copied once. | No | +| `center` |`array`| The center about which to make the pattern. This is a 2D vector. | No | +| `arcDegrees` |`number` (`double`)| The arc angle (in degrees) to place the repetitions. Must be greater than 0. | No | | `rotateDuplicates` |`boolean`| Whether or not to rotate the duplicates as they are copied. | No | diff --git a/docs/kcl/types/CircularPattern3dData.md b/docs/kcl/types/CircularPattern3dData.md index 7fbce47b84..201782040a 100644 --- a/docs/kcl/types/CircularPattern3dData.md +++ b/docs/kcl/types/CircularPattern3dData.md @@ -16,10 +16,10 @@ Data for a circular pattern on a 3D model. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `arcDegrees` |`number` (`double`)| The arc angle (in degrees) to place the repetitions. Must be greater than 0. | No | +| `repetitions` |`integer` (`uint32`)| The number of repetitions. Must be greater than 0. This excludes the original entity. For example, if `repetitions` is 1, the original entity will be copied once. | No | | `axis` |`array`| The axis around which to make the pattern. This is a 3D vector. | No | | `center` |`array`| The center about which to make the pattern. This is a 3D vector. | No | -| `repetitions` |`integer` (`uint32`)| The number of repetitions. Must be greater than 0. This excludes the original entity. For example, if `repetitions` is 1, the original entity will be copied once. | No | +| `arcDegrees` |`number` (`double`)| The arc angle (in degrees) to place the repetitions. Must be greater than 0. | No | | `rotateDuplicates` |`boolean`| Whether or not to rotate the duplicates as they are copied. | No | diff --git a/docs/kcl/types/FaceTag.md b/docs/kcl/types/FaceTag.md index 4ac6790e34..04628e7730 100644 --- a/docs/kcl/types/FaceTag.md +++ b/docs/kcl/types/FaceTag.md @@ -55,9 +55,9 @@ A tag for the face. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `__meta` |`array`| | No | -| `info` |`object`| Engine information for a tag. | No | | `value` |`string`| | No | +| `info` |`object`| Engine information for a tag. | No | +| `__meta` |`array`| | No | ---- diff --git a/docs/kcl/types/HelixData.md b/docs/kcl/types/HelixData.md index 7bd3c1cf95..aedf2c4f26 100644 --- a/docs/kcl/types/HelixData.md +++ b/docs/kcl/types/HelixData.md @@ -16,9 +16,9 @@ Data for helices. | Property | Type | Description | Required | |----------|------|-------------|----------| +| `revolutions` |`number` (`double`)| Number of revolutions. | No | | `angleStart` |`number` (`double`)| Start angle (in degrees). | No | | `ccw` |`boolean`| Is the helix rotation counter clockwise? The default is `false`. | No | | `length` |`number` (`double`)| Length of the helix. If this argument is not provided, the height of the solid is used. | No | -| `revolutions` |`number` (`double`)| Number of revolutions. | No | diff --git a/docs/kcl/types/ImportFormat.md b/docs/kcl/types/ImportFormat.md index 6eddf89b02..90f95eb2c8 100644 --- a/docs/kcl/types/ImportFormat.md +++ b/docs/kcl/types/ImportFormat.md @@ -55,8 +55,8 @@ Wavefront OBJ format. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `coords` |`object`| Co-ordinate system of input data. Defaults to the [KittyCAD co-ordinate system. | No | | `type` |enum: `obj`| | No | +| `coords` |`object`| Co-ordinate system of input data. Defaults to the [KittyCAD co-ordinate system. | No | | `units` |`oneOf`| The units of the input data. This is very important for correct scaling and when calculating physics properties like mass, etc. Defaults to millimeters. | No | @@ -73,8 +73,8 @@ The PLY Polygon File Format. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `coords` |`object`| Co-ordinate system of input data. Defaults to the [KittyCAD co-ordinate system. | No | | `type` |enum: `ply`| | No | +| `coords` |`object`| Co-ordinate system of input data. Defaults to the [KittyCAD co-ordinate system. | No | | `units` |`oneOf`| The units of the input data. This is very important for correct scaling and when calculating physics properties like mass, etc. Defaults to millimeters. | No | @@ -123,8 +123,8 @@ ST**ereo**L**ithography format. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `coords` |`object`| Co-ordinate system of input data. Defaults to the [KittyCAD co-ordinate system. | No | | `type` |enum: `stl`| | No | +| `coords` |`object`| Co-ordinate system of input data. Defaults to the [KittyCAD co-ordinate system. | No | | `units` |`oneOf`| The units of the input data. This is very important for correct scaling and when calculating physics properties like mass, etc. Defaults to millimeters. | No | diff --git a/docs/kcl/types/ImportedGeometry.md b/docs/kcl/types/ImportedGeometry.md index 48b8282a26..ba87f1fae1 100644 --- a/docs/kcl/types/ImportedGeometry.md +++ b/docs/kcl/types/ImportedGeometry.md @@ -16,8 +16,8 @@ Data for an imported geometry. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `__meta` |`array`| | No | | `id` |`string` (`uuid`)| The ID of the imported geometry. | No | | `value` |`array`| The original file paths. | No | +| `__meta` |`array`| | No | diff --git a/docs/kcl/types/LinearPattern2dData.md b/docs/kcl/types/LinearPattern2dData.md index 641daf7aad..9d401a1ff2 100644 --- a/docs/kcl/types/LinearPattern2dData.md +++ b/docs/kcl/types/LinearPattern2dData.md @@ -16,8 +16,8 @@ Data for a linear pattern on a 2D sketch. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `axis` |`array`| The axis of the pattern. This is a 2D vector. | No | -| `distance` |`number` (`double`)| The distance between each repetition. This can also be referred to as spacing. | No | | `repetitions` |`integer` (`uint32`)| The number of repetitions. Must be greater than 0. This excludes the original entity. For example, if `repetitions` is 1, the original entity will be copied once. | No | +| `distance` |`number` (`double`)| The distance between each repetition. This can also be referred to as spacing. | No | +| `axis` |`array`| The axis of the pattern. This is a 2D vector. | No | diff --git a/docs/kcl/types/LinearPattern3dData.md b/docs/kcl/types/LinearPattern3dData.md index 1464cd9d46..e7895efd93 100644 --- a/docs/kcl/types/LinearPattern3dData.md +++ b/docs/kcl/types/LinearPattern3dData.md @@ -16,8 +16,8 @@ Data for a linear pattern on a 3D model. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `axis` |`array`| The axis of the pattern. | No | -| `distance` |`number` (`double`)| The distance between each repetition. This can also be referred to as spacing. | No | | `repetitions` |`integer` (`uint32`)| The number of repetitions. Must be greater than 0. This excludes the original entity. For example, if `repetitions` is 1, the original entity will be copied once. | No | +| `distance` |`number` (`double`)| The distance between each repetition. This can also be referred to as spacing. | No | +| `axis` |`array`| The axis of the pattern. | No | diff --git a/docs/kcl/types/LoftData.md b/docs/kcl/types/LoftData.md index 3312351949..c6ff386457 100644 --- a/docs/kcl/types/LoftData.md +++ b/docs/kcl/types/LoftData.md @@ -16,9 +16,9 @@ Data for a loft. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `baseCurveIndex` |`integer` (`uint32`)| This can be set to override the automatically determined topological base curve, which is usually the first section encountered. | No | +| `vDegree` |`integer` (`uint32`)| Degree of the interpolation. Must be greater than zero. For example, use 2 for quadratic, or 3 for cubic interpolation in the V direction. This defaults to 2, if not specified. | No | | `bezApproximateRational` |`boolean`| Attempt to approximate rational curves (such as arcs) using a bezier. This will remove banding around interpolations between arcs and non-arcs. It may produce errors in other scenarios Over time, this field won't be necessary. | No | +| `baseCurveIndex` |`integer` (`uint32`)| This can be set to override the automatically determined topological base curve, which is usually the first section encountered. | No | | `tolerance` |`number` (`double`)| Tolerance for the loft operation. | No | -| `vDegree` |`integer` (`uint32`)| Degree of the interpolation. Must be greater than zero. For example, use 2 for quadratic, or 3 for cubic interpolation in the V direction. This defaults to 2, if not specified. | No | diff --git a/docs/kcl/types/ShellData.md b/docs/kcl/types/ShellData.md index fcd87c09a4..bc6f338f02 100644 --- a/docs/kcl/types/ShellData.md +++ b/docs/kcl/types/ShellData.md @@ -16,7 +16,7 @@ Data for shells. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `faces` |`array`| The faces you want removed. | No | | `thickness` |`number` (`double`)| The thickness of the shell. | No | +| `faces` |`array`| The faces you want removed. | No | diff --git a/docs/kcl/types/Sketch.md b/docs/kcl/types/Sketch.md index 02df9417e3..02d78f0baf 100644 --- a/docs/kcl/types/Sketch.md +++ b/docs/kcl/types/Sketch.md @@ -16,11 +16,11 @@ A sketch is a collection of paths. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `__meta` |`array`| Metadata. | No | | `id` |`string` (`uuid`)| The id of the sketch (this will change when the engine's reference to it changes. | No | +| `value` |`array`| The paths in the sketch. | No | | `on` |`oneOf`| What the sketch is on (can be a plane or a face). | No | | `start` |`object`| The starting path. | No | | `tags` |`object`| Tag identifiers that have been declared in this sketch. | No | -| `value` |`array`| The paths in the sketch. | No | +| `__meta` |`array`| Metadata. | No | diff --git a/docs/kcl/types/SketchData.md b/docs/kcl/types/SketchData.md index 61b9b304f5..de0e33b80c 100644 --- a/docs/kcl/types/SketchData.md +++ b/docs/kcl/types/SketchData.md @@ -116,14 +116,14 @@ An solid is a collection of extrude surfaces. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `__meta` |`array`| Metadata. | No | -| `edgeCuts` |`array`| Chamfers or fillets on this solid. | No | -| `endCapId` |`string` (`uuid`)| The id of the extrusion end cap | No | -| `height` |`number` (`double`)| The height of the solid. | No | | `id` |`string` (`uuid`)| The id of the solid. | No | +| `value` |`array`| The extrude surfaces. | No | | `sketch` |`object`| The sketch. | No | +| `height` |`number` (`double`)| The height of the solid. | No | | `startCapId` |`string` (`uuid`)| The id of the extrusion start cap | No | -| `value` |`array`| The extrude surfaces. | No | +| `endCapId` |`string` (`uuid`)| The id of the extrusion end cap | No | +| `edgeCuts` |`array`| Chamfers or fillets on this solid. | No | +| `__meta` |`array`| Metadata. | No | ---- diff --git a/docs/kcl/types/SketchOrSurface.md b/docs/kcl/types/SketchOrSurface.md index 0d3338b513..d619725d6b 100644 --- a/docs/kcl/types/SketchOrSurface.md +++ b/docs/kcl/types/SketchOrSurface.md @@ -29,14 +29,14 @@ A plane. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `__meta` |`array`| | No | -| `id` |`string` (`uuid`)| The id of the plane. | No | -| `origin` |`object`| Origin of the plane. | No | | `type` |enum: `plane`| | No | +| `id` |`string` (`uuid`)| The id of the plane. | No | | `value` |`oneOf`| Type for a plane. | No | +| `origin` |`object`| Origin of the plane. | No | | `xAxis` |`object`| What should the plane’s X axis be? | No | | `yAxis` |`object`| What should the plane’s Y axis be? | No | | `zAxis` |`object`| The z-axis (normal). | No | +| `__meta` |`array`| | No | ---- @@ -52,14 +52,14 @@ A face. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `__meta` |`array`| | No | -| `id` |`string` (`uuid`)| The id of the face. | No | -| `solid` |`object`| The solid the face is on. | No | | `type` |enum: `face`| | No | +| `id` |`string` (`uuid`)| The id of the face. | No | | `value` |`string`| The tag of the face. | No | | `xAxis` |`object`| What should the face’s X axis be? | No | | `yAxis` |`object`| What should the face’s Y axis be? | No | | `zAxis` |`object`| The z-axis (normal). | No | +| `solid` |`object`| The solid the face is on. | No | +| `__meta` |`array`| | No | ---- @@ -80,12 +80,12 @@ A sketch is a collection of paths. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `__meta` |`array`| Metadata. | No | | `id` |`string` (`uuid`)| The id of the sketch (this will change when the engine's reference to it changes. | No | +| `value` |`array`| The paths in the sketch. | No | | `on` |`oneOf`| What the sketch is on (can be a plane or a face). | No | | `start` |`object`| The starting path. | No | | `tags` |`object`| Tag identifiers that have been declared in this sketch. | No | -| `value` |`array`| The paths in the sketch. | No | +| `__meta` |`array`| Metadata. | No | ---- diff --git a/docs/kcl/types/SketchSet.md b/docs/kcl/types/SketchSet.md index 33275db843..2c4b5b2e27 100644 --- a/docs/kcl/types/SketchSet.md +++ b/docs/kcl/types/SketchSet.md @@ -23,13 +23,13 @@ A sketch is a collection of paths. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `__meta` |`array`| Metadata. | No | +| `type` |enum: `sketch`| | No | | `id` |`string` (`uuid`)| The id of the sketch (this will change when the engine's reference to it changes. | No | +| `value` |`array`| The paths in the sketch. | No | | `on` |`oneOf`| What the sketch is on (can be a plane or a face). | No | | `start` |`object`| The starting path. | No | | `tags` |`object`| Tag identifiers that have been declared in this sketch. | No | -| `type` |enum: `sketch`| | No | -| `value` |`array`| The paths in the sketch. | No | +| `__meta` |`array`| Metadata. | No | ---- diff --git a/docs/kcl/types/SketchSurface.md b/docs/kcl/types/SketchSurface.md index 876ea228d5..61a89d0270 100644 --- a/docs/kcl/types/SketchSurface.md +++ b/docs/kcl/types/SketchSurface.md @@ -23,14 +23,14 @@ A plane. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `__meta` |`array`| | No | -| `id` |`string` (`uuid`)| The id of the plane. | No | -| `origin` |`object`| Origin of the plane. | No | | `type` |enum: `plane`| | No | +| `id` |`string` (`uuid`)| The id of the plane. | No | | `value` |`oneOf`| Type for a plane. | No | +| `origin` |`object`| Origin of the plane. | No | | `xAxis` |`object`| What should the plane’s X axis be? | No | | `yAxis` |`object`| What should the plane’s Y axis be? | No | | `zAxis` |`object`| The z-axis (normal). | No | +| `__meta` |`array`| | No | ---- @@ -46,14 +46,14 @@ A face. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `__meta` |`array`| | No | -| `id` |`string` (`uuid`)| The id of the face. | No | -| `solid` |`object`| The solid the face is on. | No | | `type` |enum: `face`| | No | +| `id` |`string` (`uuid`)| The id of the face. | No | | `value` |`string`| The tag of the face. | No | | `xAxis` |`object`| What should the face’s X axis be? | No | | `yAxis` |`object`| What should the face’s Y axis be? | No | | `zAxis` |`object`| The z-axis (normal). | No | +| `solid` |`object`| The solid the face is on. | No | +| `__meta` |`array`| | No | ---- diff --git a/docs/kcl/types/Solid.md b/docs/kcl/types/Solid.md index f50064fa00..ce96792d6d 100644 --- a/docs/kcl/types/Solid.md +++ b/docs/kcl/types/Solid.md @@ -16,13 +16,13 @@ An solid is a collection of extrude surfaces. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `__meta` |`array`| Metadata. | No | -| `edgeCuts` |`array`| Chamfers or fillets on this solid. | No | -| `endCapId` |`string` (`uuid`)| The id of the extrusion end cap | No | -| `height` |`number` (`double`)| The height of the solid. | No | | `id` |`string` (`uuid`)| The id of the solid. | No | +| `value` |`array`| The extrude surfaces. | No | | `sketch` |`object`| The sketch. | No | +| `height` |`number` (`double`)| The height of the solid. | No | | `startCapId` |`string` (`uuid`)| The id of the extrusion start cap | No | -| `value` |`array`| The extrude surfaces. | No | +| `endCapId` |`string` (`uuid`)| The id of the extrusion end cap | No | +| `edgeCuts` |`array`| Chamfers or fillets on this solid. | No | +| `__meta` |`array`| Metadata. | No | diff --git a/docs/kcl/types/SolidSet.md b/docs/kcl/types/SolidSet.md index 799945c652..b286ea3b30 100644 --- a/docs/kcl/types/SolidSet.md +++ b/docs/kcl/types/SolidSet.md @@ -23,15 +23,15 @@ An solid is a collection of extrude surfaces. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `__meta` |`array`| Metadata. | No | -| `edgeCuts` |`array`| Chamfers or fillets on this solid. | No | -| `endCapId` |`string` (`uuid`)| The id of the extrusion end cap | No | -| `height` |`number` (`double`)| The height of the solid. | No | +| `type` |enum: `solid`| | No | | `id` |`string` (`uuid`)| The id of the solid. | No | +| `value` |`array`| The extrude surfaces. | No | | `sketch` |`object`| The sketch. | No | +| `height` |`number` (`double`)| The height of the solid. | No | | `startCapId` |`string` (`uuid`)| The id of the extrusion start cap | No | -| `type` |enum: `solid`| | No | -| `value` |`array`| The extrude surfaces. | No | +| `endCapId` |`string` (`uuid`)| The id of the extrusion end cap | No | +| `edgeCuts` |`array`| Chamfers or fillets on this solid. | No | +| `__meta` |`array`| Metadata. | No | ---- diff --git a/docs/kcl/types/TangentialArcData.md b/docs/kcl/types/TangentialArcData.md index 0b841179b1..02de3d88f6 100644 --- a/docs/kcl/types/TangentialArcData.md +++ b/docs/kcl/types/TangentialArcData.md @@ -21,8 +21,8 @@ Data to draw a tangential arc. | Property | Type | Description | Required | |----------|------|-------------|----------| -| `offset` |`number` (`double`)| Offset of the arc, in degrees. | No | | `radius` |`number` (`double`)| Radius of the arc. Not to be confused with Raiders of the Lost Ark. | No | +| `offset` |`number` (`double`)| Offset of the arc, in degrees. | No | ---- diff --git a/src/wasm-lib/Cargo.lock b/src/wasm-lib/Cargo.lock index c84d30a8a3..4cd0420d88 100644 --- a/src/wasm-lib/Cargo.lock +++ b/src/wasm-lib/Cargo.lock @@ -1303,6 +1303,7 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", + "serde", ] [[package]] @@ -2704,6 +2705,7 @@ dependencies = [ "bytes", "chrono", "dyn-clone", + "indexmap 1.9.3", "schemars_derive", "serde", "serde_json", diff --git a/src/wasm-lib/kcl/Cargo.toml b/src/wasm-lib/kcl/Cargo.toml index 77f8933657..2fb7ba92df 100644 --- a/src/wasm-lib/kcl/Cargo.toml +++ b/src/wasm-lib/kcl/Cargo.toml @@ -37,7 +37,7 @@ parse-display = "0.9.1" pyo3 = { version = "0.22.3", optional = true } reqwest = { version = "0.11.26", default-features = false, features = ["stream", "rustls-tls"] } ropey = "1.6.1" -schemars = { version = "0.8.17", features = ["impl_json_schema", "url", "uuid1"] } +schemars = { version = "0.8.17", features = ["impl_json_schema", "url", "uuid1", "preserve_order"] } serde = { version = "1.0.210", features = ["derive"] } serde_json = "1.0.128" sha2 = "0.10.8" diff --git a/src/wasm-lib/kcl/src/docs/mod.rs b/src/wasm-lib/kcl/src/docs/mod.rs index 661aaa9bf9..54741dd2c4 100644 --- a/src/wasm-lib/kcl/src/docs/mod.rs +++ b/src/wasm-lib/kcl/src/docs/mod.rs @@ -807,10 +807,10 @@ mod tests { assert_eq!( snippet, r#"patternCircular3d({ - arcDegrees: ${0:3.14}, + repetitions: ${0:10}, axis: [${1:3.14}, ${2:3.14}, ${3:3.14}], center: [${4:3.14}, ${5:3.14}, ${6:3.14}], - repetitions: ${7:10}, + arcDegrees: ${7:3.14}, rotateDuplicates: ${8:false}, }, ${9:%})${}"# ); @@ -848,8 +848,8 @@ mod tests { assert_eq!( snippet, r#"arc({ - angleEnd: ${0:3.14}, - angleStart: ${1:3.14}, + angleStart: ${0:3.14}, + angleEnd: ${1:3.14}, radius: ${2:3.14}, }, ${3:%})${}"# ); @@ -862,9 +862,9 @@ mod tests { assert_eq!( snippet, r#"patternLinear2d({ - axis: [${0:3.14}, ${1:3.14}], - distance: ${2:3.14}, - repetitions: ${3:10}, + repetitions: ${0:10}, + distance: ${1:3.14}, + axis: [${2:3.14}, ${3:3.14}], }, ${4:%})${}"# ); }