[ { "name": "angledLine", "summary": "Draw a line segment relative to the current origin using the polar measure of some angle and distance.", "description": "", "tags": [ "sketch" ], "args": [ { "name": "sketch", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "Which sketch should this path be added to?", "labelRequired": false }, { "name": "angle", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "double", "type": "number", "format": "double", "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "Which angle should the line be drawn at?", "labelRequired": true }, { "name": "length", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Draw the line this distance along the given angle. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given.", "labelRequired": true }, { "name": "lengthX", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Draw the line this distance along the X axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given.", "labelRequired": true }, { "name": "lengthY", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Draw the line this distance along the Y axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given.", "labelRequired": true }, { "name": "endAbsoluteX", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Draw the line along the given angle until it reaches this point along the X axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given.", "labelRequired": true }, { "name": "endAbsoluteY", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Draw the line along the given angle until it reaches this point along the Y axis. Only one of `length`, `lengthX`, `lengthY`, `endAbsoluteX`, `endAbsoluteY` can be given.", "labelRequired": true }, { "name": "tag", "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Create a new tag which refers to this line", "labelRequired": true } ], "returnValue": { "name": "", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "exampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> yLine(endAbsolute = 15)\n |> angledLine(angle = 30, length = 15)\n |> line(end = [8, -10])\n |> yLine(endAbsolute = 0)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)", false ] ] }, { "name": "angledLineThatIntersects", "summary": "Draw an angled line from the current origin, constructing a line segment such that the newly created line intersects the desired target line segment.", "description": "", "tags": [ "sketch" ], "args": [ { "name": "sketch", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "Which sketch should this path be added to?", "labelRequired": false }, { "name": "angle", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "TyF64", "type": "number", "format": "double", "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "Which angle should the line be drawn at?", "labelRequired": true }, { "name": "intersectTag", "type": "TagIdentifier", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "TagIdentifier", "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "The tag of the line to intersect with", "labelRequired": true }, { "name": "offset", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "The offset from the intersecting line. Defaults to 0.", "labelRequired": true }, { "name": "tag", "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Create a new tag which refers to this line", "labelRequired": true } ], "returnValue": { "name": "", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "exampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> line(endAbsolute = [5, 10])\n |> line(endAbsolute = [-10, 10], tag = $lineToIntersect)\n |> line(endAbsolute = [0, 20])\n |> angledLineThatIntersects(angle = 80, intersectTag = lineToIntersect, offset = 10)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)", false ] ] }, { "name": "arc", "summary": "Draw a curved line segment along an imaginary circle.", "description": "The arc is constructed such that the current position of the sketch is placed along an imaginary circle of the specified radius, at angleStart degrees. The resulting arc is the segment of the imaginary circle from that origin point to angleEnd, radius away from the center of the imaginary circle.\n\nUnless this makes a lot of sense and feels like what you're looking for to construct your shape, you're likely looking for tangentialArc.", "tags": [ "sketch" ], "args": [ { "name": "sketch", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "Which sketch should this path be added to?", "labelRequired": false }, { "name": "angleStart", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "includeInSnippet": true, "description": "Where along the circle should this arc start?", "labelRequired": true }, { "name": "angleEnd", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "includeInSnippet": true, "description": "Where along the circle should this arc end?", "labelRequired": true }, { "name": "radius", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "How large should the circle be? Incompatible with `diameter`.", "labelRequired": true }, { "name": "diameter", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "includeInSnippet": true, "description": "How large should the circle be? Incompatible with `radius`.", "labelRequired": true }, { "name": "interiorAbsolute", "type": "Point2d", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_Array_size_2_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2, "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Any point between the arc's start and end? Requires `endAbsolute`. Incompatible with `angleStart` or `angleEnd`", "labelRequired": true }, { "name": "endAbsolute", "type": "Point2d", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_Array_size_2_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2, "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Where should this arc end? Requires `interiorAbsolute`. Incompatible with `angleStart` or `angleEnd`", "labelRequired": true }, { "name": "tag", "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Create a new tag which refers to this line", "labelRequired": true } ], "returnValue": { "name": "", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "exampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> line(end = [10, 0])\n |> arc(angleStart = 0, angleEnd = 280, radius = 16)\n |> close()\nexample = extrude(exampleSketch, length = 10)", false ], [ "exampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> arc(endAbsolute = [10, 0], interiorAbsolute = [5, 5])\n |> close()\nexample = extrude(exampleSketch, length = 10)", false ] ] }, { "name": "bezierCurve", "summary": "Draw a smooth, continuous, curved line segment from the current origin to the desired (x, y), using a number of control points to shape the curve's shape.", "description": "", "tags": [ "sketch" ], "args": [ { "name": "sketch", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "Which sketch should this path be added to?", "labelRequired": false }, { "name": "control1", "type": "Point2d", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_Array_size_2_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2, "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "First control point for the cubic", "labelRequired": true }, { "name": "control2", "type": "Point2d", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_Array_size_2_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2, "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Second control point for the cubic", "labelRequired": true }, { "name": "end", "type": "Point2d", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_Array_size_2_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2, "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "How far away (along the X and Y axes) should this line go?", "labelRequired": true }, { "name": "control1Absolute", "type": "Point2d", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_Array_size_2_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2, "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "First control point for the cubic. Absolute point.", "labelRequired": true }, { "name": "control2Absolute", "type": "Point2d", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_Array_size_2_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2, "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Second control point for the cubic. Absolute point.", "labelRequired": true }, { "name": "endAbsolute", "type": "Point2d", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_Array_size_2_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2, "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Coordinate on the plane at which this line should end.", "labelRequired": true }, { "name": "tag", "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Create a new tag which refers to this line", "labelRequired": true } ], "returnValue": { "name": "", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "// Example using relative control points.\nexampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> line(end = [0, 10])\n |> bezierCurve(control1 = [5, 0], control2 = [5, 10], end = [10, 10])\n |> line(endAbsolute = [10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 10)", false ], [ "// Example using absolute control points.\nstartSketchOn(XY)\n |> startProfile(at = [300, 300])\n |> bezierCurve(control1Absolute = [600, 300], control2Absolute = [-300, -100], endAbsolute = [600, 600])\n |> close()\n |> extrude(length = 10)", false ] ] }, { "name": "close", "summary": "Construct a line segment from the current origin back to the profile's origin, ensuring the resulting 2-dimensional sketch is not open-ended.", "description": "If you want to perform some 3-dimensional operation on a sketch, like extrude or sweep, you must `close` it first. `close` must be called even if the end point of the last segment is coincident with the sketch starting point.", "tags": [ "sketch" ], "args": [ { "name": "sketch", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "The sketch you want to close", "labelRequired": false }, { "name": "tag", "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Create a new tag which refers to this line", "labelRequired": true } ], "returnValue": { "name": "", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> line(end = [10, 10])\n |> line(end = [10, 0])\n |> close()\n |> extrude(length = 10)", false ], [ "exampleSketch = startSketchOn(-XZ)\n |> startProfile(at = [0, 0])\n |> line(end = [10, 0])\n |> line(end = [0, 10])\n |> close()\n\nexample = extrude(exampleSketch, length = 10)", false ] ] }, { "name": "involuteCircular", "summary": "Extend the current sketch with a new involute circular curve.", "description": "", "tags": [ "sketch" ], "args": [ { "name": "sketch", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "Which sketch should this path be added to?", "labelRequired": false }, { "name": "startRadius", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "TyF64", "type": "number", "format": "double", "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "The involute is described between two circles, start_radius is the radius of the inner circle.", "labelRequired": true }, { "name": "endRadius", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "TyF64", "type": "number", "format": "double", "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "The involute is described between two circles, end_radius is the radius of the outer circle.", "labelRequired": true }, { "name": "angle", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "TyF64", "type": "number", "format": "double", "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "The angle to rotate the involute by. A value of zero will produce a curve with a tangent along the x-axis at the start point of the curve.", "labelRequired": true }, { "name": "reverse", "type": "bool", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_Boolean", "type": "boolean", "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "If reverse is true, the segment will start from the end of the involute, otherwise it will start from that start. Defaults to false.", "labelRequired": true }, { "name": "tag", "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Create a new tag which refers to this line", "labelRequired": true } ], "returnValue": { "name": "", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "a = 10\nb = 14\nstartSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> involuteCircular(startRadius = a, endRadius = b, angle = 60)\n |> involuteCircular(\n startRadius = a,\n endRadius = b,\n angle = 60,\n reverse = true,\n )", false ] ] }, { "name": "line", "summary": "Extend the current sketch with a new straight line.", "description": "", "tags": [ "sketch" ], "args": [ { "name": "sketch", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "Which sketch should this path be added to?", "labelRequired": false }, { "name": "endAbsolute", "type": "Point2d", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_Array_size_2_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2, "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Which absolute point should this line go to? Incompatible with `end`.", "labelRequired": true }, { "name": "end", "type": "Point2d", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_Array_size_2_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2, "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "includeInSnippet": true, "description": "How far away (along the X and Y axes) should this line go? Incompatible with `endAbsolute`.", "labelRequired": true }, { "name": "tag", "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Create a new tag which refers to this line", "labelRequired": true } ], "returnValue": { "name": "", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "triangle = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n // The END argument means it ends at exactly [10, 0].\n // This is an absolute measurement, it is NOT relative to\n // the start of the sketch.\n |> line(endAbsolute = [10, 0])\n |> line(endAbsolute = [0, 10])\n |> line(endAbsolute = [-10, 0], tag = $thirdLineOfTriangle)\n |> close()\n |> extrude(length = 5)\n\nbox = startSketchOn(XZ)\n |> startProfile(at = [10, 10])\n // The 'to' argument means move the pen this much.\n // So, [10, 0] is a relative distance away from the current point.\n |> line(end = [10, 0])\n |> line(end = [0, 10])\n |> line(end = [-10, 0], tag = $thirdLineOfBox)\n |> close()\n |> extrude(length = 5)", false ] ] }, { "name": "profileStart", "summary": "Extract the provided 2-dimensional sketch's profile's origin value.", "description": "", "tags": [ "sketch" ], "args": [ { "name": "profile", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "Profile whose start is being used", "labelRequired": false } ], "returnValue": { "name": "", "type": "[number]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_size_2_of_double", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "sketch001 = startSketchOn(XY)\n |> startProfile(at = [5, 2])\n |> angledLine(angle = 120, length = 50, tag = $seg01)\n |> angledLine(angle = segAng(seg01) + 120, length = 50)\n |> line(end = profileStart(%))\n |> close()\n |> extrude(length = 20)", false ] ] }, { "name": "profileStartX", "summary": "Extract the provided 2-dimensional sketch's profile's origin's 'x' value.", "description": "", "tags": [ "sketch" ], "args": [ { "name": "profile", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "Profile whose start is being used", "labelRequired": false } ], "returnValue": { "name": "", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "double", "type": "number", "format": "double" }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "sketch001 = startSketchOn(XY)\n |> startProfile(at = [5, 2])\n |> angledLine(angle = -26.6, length = 50)\n |> angledLine(angle = 90, length = 50)\n |> angledLine(angle = 30, endAbsoluteX = profileStartX(%))", false ] ] }, { "name": "profileStartY", "summary": "Extract the provided 2-dimensional sketch's profile's origin's 'y' value.", "description": "", "tags": [ "sketch" ], "args": [ { "name": "profile", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "Profile whose start is being used", "labelRequired": false } ], "returnValue": { "name": "", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "double", "type": "number", "format": "double" }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "sketch001 = startSketchOn(XY)\n |> startProfile(at = [5, 2])\n |> angledLine(angle = -60, length = 14)\n |> angledLine(angle = 30, endAbsoluteY = profileStartY(%))", false ] ] }, { "name": "startProfile", "summary": "Start a new profile at a given point.", "description": "", "tags": [ "sketch" ], "args": [ { "name": "sketchSurface", "type": "SketchSurface", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "SketchSurface", "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ], "definitions": { "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "What to start the profile on", "labelRequired": false }, { "name": "at", "type": "Point2d", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_size_2_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2, "definitions": { "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "snippetValueArray": [ "0", "0" ], "description": "Where to start the profile. An absolute point.", "labelRequired": true }, { "name": "tag", "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true, "definitions": { "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Tag this first starting point", "labelRequired": true } ], "returnValue": { "name": "", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "exampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> line(end = [10, 0])\n |> line(end = [0, 10])\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)", false ], [ "exampleSketch = startSketchOn(-XZ)\n |> startProfile(at = [10, 10])\n |> line(end = [10, 0])\n |> line(end = [0, 10])\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)", false ], [ "exampleSketch = startSketchOn(-XZ)\n |> startProfile(at = [-10, 23])\n |> line(end = [10, 0])\n |> line(end = [0, 10])\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)", false ] ] }, { "name": "startSketchOn", "summary": "Start a new 2-dimensional sketch on a specific plane or face.", "description": "### Sketch on Face Behavior\n\nThere are some important behaviors to understand when sketching on a face:\n\nThe resulting sketch will _include_ the face and thus Solid that was sketched on. So say you were to export the resulting Sketch / Solid from a sketch on a face, you would get both the artifact of the sketch on the face and the parent face / Solid itself.\n\nThis is important to understand because if you were to then sketch on the resulting Solid, it would again include the face and parent Solid that was sketched on. This could go on indefinitely.\n\nThe point is if you want to export the result of a sketch on a face, you only need to export the final Solid that was created from the sketch on the face, since it will include all the parent faces and Solids.", "tags": [ "sketch" ], "args": [ { "name": "planeOrSolid", "type": "SketchData", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "SketchData", "description": "Data for start sketch on. You can start a sketch on a plane or an solid.", "anyOf": [ { "$ref": "#/components/schemas/PlaneData" }, { "$ref": "#/components/schemas/Plane" }, { "$ref": "#/components/schemas/Solid" } ], "definitions": { "PlaneData": { "description": "Orientation data that can be used to construct a plane, not a plane in itself.", "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": { "$ref": "#/components/schemas/PlaneInfo" } }, "additionalProperties": false } ] }, "PlaneInfo": { "type": "object", "required": [ "origin", "xAxis", "yAxis" ], "properties": { "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "Plane": { "type": "object", "required": [ "artifactId", "id", "origin", "value", "xAxis", "yAxis" ], "properties": { "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "The plane or solid to sketch on", "labelRequired": false }, { "name": "face", "type": "FaceTag", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_FaceTag", "allOf": [ { "$ref": "#/components/schemas/FaceTag" } ], "nullable": true, "definitions": { "PlaneData": { "description": "Orientation data that can be used to construct a plane, not a plane in itself.", "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": { "$ref": "#/components/schemas/PlaneInfo" } }, "additionalProperties": false } ] }, "PlaneInfo": { "type": "object", "required": [ "origin", "xAxis", "yAxis" ], "properties": { "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "Plane": { "type": "object", "required": [ "artifactId", "id", "origin", "value", "xAxis", "yAxis" ], "properties": { "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" }, "FaceTag": { "description": "A tag for a face.", "anyOf": [ { "$ref": "#/components/schemas/StartOrEnd" }, { "description": "A tag for the face.", "allOf": [ { "$ref": "#/components/schemas/TagIdentifier" } ] } ] }, "StartOrEnd": { "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" ] } ] } } }, "required": false, "description": "Identify a face of a solid if a solid is specified as the input argument (`plane_or_solid`)", "labelRequired": true } ], "returnValue": { "name": "", "type": "SketchSurface", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "SketchSurface", "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ], "definitions": { "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "exampleSketch = startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> line(end = [10, 0])\n |> line(end = [0, 10])\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)\n\nexampleSketch002 = startSketchOn(example, face = END)\n |> startProfile(at = [1, 1])\n |> line(end = [8, 0])\n |> line(end = [0, 8])\n |> line(end = [-8, 0])\n |> close()\n\nexample002 = extrude(exampleSketch002, length = 5)\n\nexampleSketch003 = startSketchOn(example002, face = END)\n |> startProfile(at = [2, 2])\n |> line(end = [6, 0])\n |> line(end = [0, 6])\n |> line(end = [-6, 0])\n |> close()\n\nexample003 = extrude(exampleSketch003, length = 5)", false ], [ "// Sketch on the end of an extruded face by tagging the end face.\n\n\nexampleSketch = startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> line(end = [10, 0])\n |> line(end = [0, 10])\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5, tagEnd = $end01)\n\nexampleSketch002 = startSketchOn(example, face = end01)\n |> startProfile(at = [1, 1])\n |> line(end = [8, 0])\n |> line(end = [0, 8])\n |> line(end = [-8, 0])\n |> close()\n\nexample002 = extrude(exampleSketch002, length = 5, tagEnd = $end02)\n\nexampleSketch003 = startSketchOn(example002, face = end02)\n |> startProfile(at = [2, 2])\n |> line(end = [6, 0])\n |> line(end = [0, 6])\n |> line(end = [-6, 0])\n |> close()\n\nexample003 = extrude(exampleSketch003, length = 5)", false ], [ "exampleSketch = startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> line(end = [10, 0])\n |> line(end = [0, 10], tag = $sketchingFace)\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 10)\n\nexampleSketch002 = startSketchOn(example, face = sketchingFace)\n |> startProfile(at = [1, 1])\n |> line(end = [8, 0])\n |> line(end = [0, 8])\n |> line(end = [-8, 0])\n |> close(tag = $sketchingFace002)\n\nexample002 = extrude(exampleSketch002, length = 10)\n\nexampleSketch003 = startSketchOn(example002, face = sketchingFace002)\n |> startProfile(at = [-8, 12])\n |> line(end = [0, 6])\n |> line(end = [6, 0])\n |> line(end = [0, -6])\n |> close()\n\nexample003 = extrude(exampleSketch003, length = 5)", false ], [ "exampleSketch = startSketchOn(XY)\n |> startProfile(at = [4, 12])\n |> line(end = [2, 0])\n |> line(end = [0, -6])\n |> line(end = [4, -6])\n |> line(end = [0, -6])\n |> line(end = [-3.75, -4.5])\n |> line(end = [0, -5.5])\n |> line(end = [-2, 0])\n |> close()\n\nexample = revolve(exampleSketch, axis = Y, angle = 180)\n\nexampleSketch002 = startSketchOn(example, face = END)\n |> startProfile(at = [4.5, -5])\n |> line(end = [0, 5])\n |> line(end = [5, 0])\n |> line(end = [0, -5])\n |> close()\n\nexample002 = extrude(exampleSketch002, length = 5)", false ], [ "// Sketch on the end of a revolved face by tagging the end face.\n\n\nexampleSketch = startSketchOn(XY)\n |> startProfile(at = [4, 12])\n |> line(end = [2, 0])\n |> line(end = [0, -6])\n |> line(end = [4, -6])\n |> line(end = [0, -6])\n |> line(end = [-3.75, -4.5])\n |> line(end = [0, -5.5])\n |> line(end = [-2, 0])\n |> close()\n\nexample = revolve(\n exampleSketch,\n axis = Y,\n angle = 180,\n tagEnd = $end01,\n)\n\nexampleSketch002 = startSketchOn(example, face = end01)\n |> startProfile(at = [4.5, -5])\n |> line(end = [0, 5])\n |> line(end = [5, 0])\n |> line(end = [0, -5])\n |> close()\n\nexample002 = extrude(exampleSketch002, length = 5)", false ], [ "a1 = startSketchOn({\n origin = { x = 0, y = 0, z = 0 },\n xAxis = { x = 1, y = 0, z = 0 },\n yAxis = { x = 0, y = 1, z = 0 },\n zAxis = { x = 0, y = 0, z = 1 }\n })\n |> startProfile(at = [0, 0])\n |> line(end = [100.0, 0])\n |> yLine(length = -100.0)\n |> xLine(length = -100.0)\n |> yLine(length = 100.0)\n |> close()\n |> extrude(length = 3.14)", false ] ] }, { "name": "subtract2d", "summary": "Use a 2-dimensional sketch to cut a hole in another 2-dimensional sketch.", "description": "", "tags": [ "sketch" ], "args": [ { "name": "sketch", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "Which sketch should this path be added to?", "labelRequired": false }, { "name": "tool", "type": "[Sketch]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_Sketch", "type": "array", "items": { "$ref": "#/components/schemas/Sketch" }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "The shape(s) which should be cut out of the sketch.", "labelRequired": true } ], "returnValue": { "name": "", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "exampleSketch = startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> line(end = [0, 5])\n |> line(end = [5, 0])\n |> line(end = [0, -5])\n |> close()\n |> subtract2d(tool = circle(center = [1, 1], radius = .25))\n |> subtract2d(tool = circle(center = [1, 4], radius = .25))\n\nexample = extrude(exampleSketch, length = 1)", false ], [ "fn squareHoleSketch() {\n squareSketch = startSketchOn(-XZ)\n |> startProfile(at = [-1, -1])\n |> line(end = [2, 0])\n |> line(end = [0, 2])\n |> line(end = [-2, 0])\n |> close()\n return squareSketch\n}\n\nexampleSketch = startSketchOn(-XZ)\n |> circle(center = [0, 0], radius = 3)\n |> subtract2d(tool = squareHoleSketch())\nexample = extrude(exampleSketch, length = 1)", false ] ] }, { "name": "tangentialArc", "summary": "Starting at the current sketch's origin, draw a curved line segment along some part of an imaginary circle until it reaches the desired (x, y) coordinates.", "description": "When using radius and angle, draw a curved line segment along part of an imaginary circle. The arc is constructed such that the last line segment is placed tangent to the imaginary circle of the specified radius. The resulting arc is the segment of the imaginary circle from that tangent point for 'angle' degrees along the imaginary circle.", "tags": [ "sketch" ], "args": [ { "name": "sketch", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "Which sketch should this path be added to?", "labelRequired": false }, { "name": "endAbsolute", "type": "Point2d", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_Array_size_2_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2, "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Which absolute point should this arc go to? Incompatible with `end`, `radius`, and `offset`.", "labelRequired": true }, { "name": "end", "type": "Point2d", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_Array_size_2_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2, "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "includeInSnippet": true, "description": "How far away (along the X and Y axes) should this arc go? Incompatible with `endAbsolute`, `radius`, and `offset`.", "labelRequired": true }, { "name": "radius", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Radius of the imaginary circle. `angle` must be given. Incompatible with `end` and `endAbsolute` and `diameter`.", "labelRequired": true }, { "name": "diameter", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Diameter of the imaginary circle. `angle` must be given. Incompatible with `end` and `endAbsolute` and `radius`.", "labelRequired": true }, { "name": "angle", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Offset of the arc in degrees. `radius` must be given. Incompatible with `end` and `endAbsolute`.", "labelRequired": true }, { "name": "tag", "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Create a new tag which refers to this arc", "labelRequired": true } ], "returnValue": { "name": "", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "exampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> angledLine(angle = 45, length = 10)\n |> tangentialArc(end = [0, -10])\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 10)", false ], [ "exampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> angledLine(angle = 60, length = 10)\n |> tangentialArc(endAbsolute = [15, 15])\n |> line(end = [10, -15])\n |> close()\n\nexample = extrude(exampleSketch, length = 10)", false ], [ "exampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> angledLine(angle = 60, length = 10)\n |> tangentialArc(radius = 10, angle = -120)\n |> angledLine(angle = -60, length = 10)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)", false ] ] }, { "name": "xLine", "summary": "Draw a line relative to the current origin to a specified distance away from the current position along the 'x' axis.", "description": "", "tags": [ "sketch" ], "args": [ { "name": "sketch", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "Which sketch should this path be added to?", "labelRequired": false }, { "name": "length", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "includeInSnippet": true, "description": "How far away along the X axis should this line go? Incompatible with `endAbsolute`.", "labelRequired": true }, { "name": "endAbsolute", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Which absolute X value should this line go to? Incompatible with `length`.", "labelRequired": true }, { "name": "tag", "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Create a new tag which refers to this line", "labelRequired": true } ], "returnValue": { "name": "", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "exampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> xLine(length = 15)\n |> angledLine(angle = 80, length = 15)\n |> line(end = [8, -10])\n |> xLine(length = 10)\n |> angledLine(angle = 120, length = 30)\n |> xLine(length = -15)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)", false ] ] }, { "name": "yLine", "summary": "Draw a line relative to the current origin to a specified distance away from the current position along the 'y' axis.", "description": "", "tags": [ "sketch" ], "args": [ { "name": "sketch", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "description": "Which sketch should this path be added to?", "labelRequired": false }, { "name": "length", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "includeInSnippet": true, "description": "How far away along the Y axis should this line go? Incompatible with `endAbsolute`.", "labelRequired": true }, { "name": "endAbsolute", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TyF64", "allOf": [ { "$ref": "#/components/schemas/TyF64" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Which absolute Y value should this line go to? Incompatible with `length`.", "labelRequired": true }, { "name": "tag", "type": "TagNode", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_TagDeclarator", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Create a new tag which refers to this line", "labelRequired": true } ], "returnValue": { "name": "", "type": "Sketch", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Sketch", "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } }, "definitions": { "Path": { "description": "A path.", "oneOf": [ { "description": "A path that goes to a point.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment that goes to a point", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A arc that is tangential to the last path segment", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "a complete arc", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "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 This is used to compute the tangential angle.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "CircleThreePoint" ] }, "p1": { "description": "Point 1 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the circle", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the circle", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "p1", "p2", "p3", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "ArcThreePoint" ] }, "p1": { "description": "Point 1 of the arc (base on the end of previous segment)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p2": { "description": "Point 2 of the arc (interiorAbsolute kwarg)", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "p3": { "description": "Point 3 of the arc (endAbsolute kwarg)", "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 }, "to": { "description": "The to point.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A path that is horizontal.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "An angled line to.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "type", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, { "description": "A circular arc, not necessarily tangential to the current point.", "type": "object", "required": [ "__geoMeta", "ccw", "center", "from", "radius", "to", "type", "units" ], "properties": { "type": { "type": "string", "enum": [ "Arc" ] }, "center": { "description": "Center of the circle that this arc is drawn on.", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 2, "minItems": 2 }, "radius": { "description": "Radius of the circle that this arc is drawn on.", "type": "number", "format": "double" }, "ccw": { "description": "True if the arc is counterclockwise.", "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } } ] }, "UnitLen": { "description": "A unit of length.", "oneOf": [ { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Mm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Cm" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "M" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Inches" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Feet" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Yards" ] } } }, { "type": "object", "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "Unknown" ] } } } ] }, "TagDeclarator": { "type": "object", "required": [ "value" ], "properties": { "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 }, "end": { "type": "integer", "format": "uint", "minimum": 0.0 } } }, "GeoMeta": { "description": "Geometry metadata.", "type": "object", "required": [ "id", "sourceRange" ], "properties": { "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, "SourceRange": { "description": "The first two items are the start and end points (byte offsets from the start of the file). The third item is whether the source range belongs to the 'main' file, i.e., the file currently being rendered/displayed in the editor.", "type": "array", "items": { "type": "integer", "format": "uint", "minimum": 0.0 }, "maxItems": 3, "minItems": 3 }, "SketchSurface": { "description": "A sketch type.", "oneOf": [ { "type": "object", "required": [ "artifactId", "id", "origin", "type", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "plane" ] }, "id": { "description": "The id of the plane.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "$ref": "#/components/schemas/PlaneType" }, "origin": { "description": "Origin of the plane.", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "xAxis": { "description": "What should the plane's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the plane's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] } } }, { "description": "A face.", "type": "object", "required": [ "artifactId", "id", "solid", "type", "units", "value", "xAxis", "yAxis" ], "properties": { "type": { "type": "string", "enum": [ "face" ] }, "id": { "description": "The id of the face.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The tag of the face.", "type": "string" }, "xAxis": { "description": "What should the face's X axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "yAxis": { "description": "What should the face's Y axis be?", "allOf": [ { "$ref": "#/components/schemas/Point3d" } ] }, "solid": { "description": "The solid the face is on.", "allOf": [ { "$ref": "#/components/schemas/Solid" } ] }, "units": { "$ref": "#/components/schemas/UnitLen" } } } ] }, "ArtifactId": { "type": "string", "format": "uuid" }, "PlaneType": { "description": "Type for a plane.", "oneOf": [ { "type": "string", "enum": [ "XY", "XZ", "YZ" ] }, { "description": "A custom plane.", "type": "string", "enum": [ "Custom" ] }, { "description": "A custom plane which has not been sent to the engine. It must be sent before it is used.", "type": "string", "enum": [ "Uninit" ] } ] }, "Point3d": { "type": "object", "required": [ "units", "x", "y", "z" ], "properties": { "x": { "type": "number", "format": "double" }, "y": { "type": "number", "format": "double" }, "z": { "type": "number", "format": "double" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "Solid": { "type": "object", "required": [ "artifactId", "height", "id", "sectional", "sketch", "units", "value" ], "properties": { "id": { "description": "The id of the solid.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID of the solid. Unlike `id`, this doesn't change.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "value": { "description": "The extrude surfaces.", "type": "array", "items": { "$ref": "#/components/schemas/ExtrudeSurface" } }, "sketch": { "description": "The sketch.", "allOf": [ { "$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": { "$ref": "#/components/schemas/EdgeCut" } }, "units": { "description": "The units of the solid.", "allOf": [ { "$ref": "#/components/schemas/UnitLen" } ] }, "sectional": { "description": "Is this a sectional solid?", "type": "boolean" } } }, "ExtrudeSurface": { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } }, { "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.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "id": { "description": "The id of the geometry.", "type": "string", "format": "uuid" }, "sourceRange": { "description": "The source range.", "allOf": [ { "$ref": "#/components/schemas/SourceRange" } ] } } } ] }, "Sketch": { "type": "object", "required": [ "artifactId", "id", "on", "originalId", "paths", "start", "units" ], "properties": { "id": { "description": "The id of the sketch (this will change when the engine's reference to it changes).", "type": "string", "format": "uuid" }, "paths": { "description": "The paths in the sketch.", "type": "array", "items": { "$ref": "#/components/schemas/Path" } }, "on": { "description": "What the sketch is on (can be a plane or a face).", "allOf": [ { "$ref": "#/components/schemas/SketchSurface" } ] }, "start": { "description": "The starting path.", "allOf": [ { "$ref": "#/components/schemas/BasePath" } ] }, "tags": { "description": "Tag identifiers that have been declared in this sketch.", "type": "object", "additionalProperties": { "$ref": "#/components/schemas/TagIdentifier" } }, "artifactId": { "description": "The original id of the sketch. This stays the same even if the sketch is is sketched on face etc.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "originalId": { "type": "string", "format": "uuid" }, "units": { "$ref": "#/components/schemas/UnitLen" } } }, "BasePath": { "description": "A base path.", "type": "object", "required": [ "__geoMeta", "from", "to", "units" ], "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 }, "units": { "$ref": "#/components/schemas/UnitLen" }, "tag": { "description": "The tag of the path.", "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true }, "__geoMeta": { "description": "Metadata.", "allOf": [ { "$ref": "#/components/schemas/GeoMeta" } ] } } }, "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } }, "EdgeCut": { "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to fillet.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "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": { "$ref": "#/components/schemas/TyF64" }, "edgeId": { "description": "The engine id of the edge to chamfer.", "type": "string", "format": "uuid" }, "tag": { "allOf": [ { "$ref": "#/components/schemas/TagDeclarator" } ], "nullable": true } } } ] }, "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "exampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> yLine(length = 15)\n |> angledLine(angle = 30, length = 15)\n |> line(end = [8, -10])\n |> yLine(length = -5)\n |> close()\n\nexample = extrude(exampleSketch, length = 10)", false ] ] } ]