[ { "name": "angledLine", "summary": "Draw a line segment relative to the current origin using the polar measure of some angle and distance.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "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" ], "keywordArguments": true, "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": "appearance", "summary": "Set the appearance of a solid. This only works on solids, not sketches or individual paths.", "description": "This will work on any solid, including extruded solids, revolved solids, and shelled solids.", "tags": [], "keywordArguments": true, "args": [ { "name": "solids", "type": "SolidOrImportedGeometry", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "SolidOrImportedGeometry", "description": "Data for a solid or an imported geometry.", "oneOf": [ { "description": "Data for an imported geometry.", "type": "object", "required": [ "id", "type", "value" ], "properties": { "type": { "type": "string", "enum": [ "importedGeometry" ] }, "id": { "description": "The ID of the imported geometry.", "type": "string", "format": "uuid" }, "value": { "description": "The original file paths.", "type": "array", "items": { "type": "string" } } } }, { "type": [ "object", "array" ], "items": { "$ref": "#/components/schemas/Solid" }, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "solidSet" ] } } } ], "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 solid(s) whose appearance is being set", "labelRequired": false }, { "name": "color", "type": "string", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "String", "type": "string", "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": "Color of the new material, a hex string like '#ff0000'", "labelRequired": true }, { "name": "metalness", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_double", "type": "number", "format": "double", "nullable": true, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": "Metalness of the new material, a percentage like 95.7.", "labelRequired": true }, { "name": "roughness", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_double", "type": "number", "format": "double", "nullable": true, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": "Roughness of the new material, a percentage like 95.7.", "labelRequired": true } ], "returnValue": { "name": "", "type": "SolidOrImportedGeometry", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "SolidOrImportedGeometry", "description": "Data for a solid or an imported geometry.", "oneOf": [ { "description": "Data for an imported geometry.", "type": "object", "required": [ "id", "type", "value" ], "properties": { "type": { "type": "string", "enum": [ "importedGeometry" ] }, "id": { "description": "The ID of the imported geometry.", "type": "string", "format": "uuid" }, "value": { "description": "The original file paths.", "type": "array", "items": { "type": "string" } } } }, { "type": [ "object", "array" ], "items": { "$ref": "#/components/schemas/Solid" }, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "solidSet" ] } } } ], "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": [ [ "// Add color to an extruded solid.\nexampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> line(endAbsolute = [10, 0])\n |> line(endAbsolute = [0, 10])\n |> line(endAbsolute = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)\n // There are other options besides 'color', but they're optional.\n |> appearance(color = '#ff0000')", false ], [ "// Add color to a revolved solid.\nsketch001 = startSketchOn(XY)\n |> circle(center = [15, 0], radius = 5)\n |> revolve(angle = 360, axis = Y)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)", false ], [ "// Add color to different solids.\nfn cube(center) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - 10, center[1] - 10])\n |> line(endAbsolute = [center[0] + 10, center[1] - 10])\n |> line(endAbsolute = [center[0] + 10, center[1] + 10])\n |> line(endAbsolute = [center[0] - 10, center[1] + 10])\n |> close()\n |> extrude(length = 10)\n}\n\nexample0 = cube(center = [0, 0])\nexample1 = cube(center = [20, 0])\nexample2 = cube(center = [40, 0])\n\nappearance(\n [example0, example1],\n color = '#ff0000',\n metalness = 50,\n roughness = 50,\n)\nappearance(\n example2,\n color = '#00ff00',\n metalness = 50,\n roughness = 50,\n)", false ], [ "// You can set the appearance before or after you shell it will yield the same result.\n// This example shows setting the appearance _after_ the shell.\nfirstSketch = startSketchOn(XY)\n |> startProfile(at = [-12, 12])\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0])\n |> close()\n |> extrude(length = 6)\n\nshell(firstSketch, faces = [END], thickness = 0.25)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)", false ], [ "// You can set the appearance before or after you shell it will yield the same result.\n// This example shows setting the appearance _before_ the shell.\nfirstSketch = startSketchOn(XY)\n |> startProfile(at = [-12, 12])\n |> line(end = [24, 0])\n |> line(end = [0, -24])\n |> line(end = [-24, 0])\n |> close()\n |> extrude(length = 6)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)\n\nshell(firstSketch, faces = [END], thickness = 0.25)", false ], [ "// Setting the appearance of a 3D pattern can be done _before_ or _after_ the pattern.\n// This example shows _before_ the pattern.\nexampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> line(end = [0, 2])\n |> line(end = [3, 1])\n |> line(end = [0, -4])\n |> close()\n\nexample = extrude(exampleSketch, length = 1)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)\n |> patternLinear3d(axis = [1, 0, 1], instances = 7, distance = 6)", false ], [ "// Setting the appearance of a 3D pattern can be done _before_ or _after_ the pattern.\n// This example shows _after_ the pattern.\nexampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> line(end = [0, 2])\n |> line(end = [3, 1])\n |> line(end = [0, -4])\n |> close()\n\nexample = extrude(exampleSketch, length = 1)\n |> patternLinear3d(axis = [1, 0, 1], instances = 7, distance = 6)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)", false ], [ "// Color the result of a 2D pattern that was extruded.\nexampleSketch = startSketchOn(XZ)\n |> startProfile(at = [.5, 25])\n |> line(end = [0, 5])\n |> line(end = [-1, 0])\n |> line(end = [0, -5])\n |> close()\n |> patternCircular2d(\n center = [0, 0],\n instances = 13,\n arcDegrees = 360,\n rotateDuplicates = true,\n )\n\nexample = extrude(exampleSketch, length = 1)\n |> appearance(color = '#ff0000', metalness = 90, roughness = 90)", false ], [ "// Color the result of a sweep.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfile(at = [0.05, 0.05])\n |> line(end = [0, 7])\n |> tangentialArc(angle = 90, radius = 5)\n |> line(end = [-3, 0])\n |> tangentialArc(angle = -90, radius = 5)\n |> line(end = [0, 7])\n\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> subtract2d(tool = pipeHole)\n |> sweep(path = sweepPath)\n |> appearance(color = \"#ff0000\", metalness = 50, roughness = 50)", false ], [ "// Change the appearance of an imported model.\n\n\nimport \"tests/inputs/cube.sldprt\" as cube\n\ncube\n |> appearance(color = \"#ff0000\", metalness = 50, roughness = 50)", 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" ], "keywordArguments": true, "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, "includeInSnippet": true, "description": "How large should the circle be?", "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": "assert", "summary": "Check a value meets some expected conditions at runtime. Program terminates with an error if conditions aren't met. If you provide multiple conditions, they will all be checked and all must be met.", "description": "", "tags": [], "keywordArguments": true, "args": [ { "name": "actual", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "TyF64", "type": "number", "format": "double" }, "required": true, "includeInSnippet": true, "description": "Value to check. It will be compared with one of the comparison arguments.", "labelRequired": false }, { "name": "isGreaterThan", "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": { "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Comparison argument. If given, checks the `actual` value is greater than this.", "labelRequired": true }, { "name": "isLessThan", "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": { "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Comparison argument. If given, checks the `actual` value is less than this.", "labelRequired": true }, { "name": "isGreaterThanOrEqual", "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": { "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Comparison argument. If given, checks the `actual` value is greater than or equal to this.", "labelRequired": true }, { "name": "isLessThanOrEqual", "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": { "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "Comparison argument. If given, checks the `actual` value is less than or equal to this.", "labelRequired": true }, { "name": "isEqualTo", "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": { "TyF64": { "type": "number", "format": "double" } } }, "required": false, "includeInSnippet": true, "description": "Comparison argument. If given, checks the `actual` value is less than or equal to this.", "labelRequired": true }, { "name": "tolerance", "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": { "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "If `isEqualTo` is used, this is the tolerance to allow for the comparison. This tolerance is used because KCL's number system has some floating-point imprecision when used with very large decimal places.", "labelRequired": true }, { "name": "error", "type": "string", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_String", "type": "string", "nullable": true, "definitions": { "TyF64": { "type": "number", "format": "double" } } }, "required": false, "description": "If the value was false, the program will terminate with this error message", "labelRequired": true } ], "returnValue": { "name": "", "type": "()", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Null", "type": "null" }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "n = 10\nassert(n, isEqualTo = 10)\nassert(\n n,\n isGreaterThanOrEqual = 0,\n isLessThan = 100,\n error = \"number should be between 0 and 100\",\n)\nassert(\n 1.0000000000012,\n isEqualTo = 1,\n tolerance = 0.0001,\n error = \"number should be almost exactly 1\",\n)", false ] ] }, { "name": "assertIs", "summary": "Asserts that a value is the boolean value true.", "description": "", "tags": [], "keywordArguments": true, "args": [ { "name": "actual", "type": "bool", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Boolean", "type": "boolean" }, "required": true, "includeInSnippet": true, "description": "Value to check. If this is the boolean value true, assert passes. Otherwise it fails.", "labelRequired": false }, { "name": "error", "type": "string", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_String", "type": "string", "nullable": true }, "required": false, "description": "If the value was false, the program will terminate with this error message", "labelRequired": true } ], "returnValue": { "name": "", "type": "()", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Null", "type": "null" }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "kclIsFun = true\nassertIs(kclIsFun)", 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" ], "keywordArguments": true, "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": "Array_size_2_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2, "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": "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": "Array_size_2_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2, "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": "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": "Array_size_2_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 2, "minItems": 2, "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": "How far away (along the X and Y axes) should this line go?", "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 = [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 ] ] }, { "name": "circleThreePoint", "summary": "Construct a circle derived from 3 points.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "sketchSurfaceOrGroup", "type": "SketchOrSurface", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "SketchOrSurface", "description": "A sketch surface or a sketch.", "anyOf": [ { "$ref": "#/components/schemas/SketchSurface" }, { "$ref": "#/components/schemas/Sketch" } ], "definitions": { "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" } } }, "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" } ] } } }, "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": "Plane or surface to sketch on.", "labelRequired": false }, { "name": "p1", "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": { "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" } } }, "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" } ] } } }, "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": "1st point to derive the circle.", "labelRequired": true }, { "name": "p2", "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": { "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" } } }, "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" } ] } } }, "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": "2nd point to derive the circle.", "labelRequired": true }, { "name": "p3", "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": { "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" } } }, "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" } ] } } }, "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": "3rd point to derive the circle.", "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": { "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" } } }, "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" } ] } } }, "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": "Identifier for the circle to reference elsewhere.", "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 |> circleThreePoint(p1 = [10, 10], p2 = [20, 8], p3 = [15, 5])\n |> extrude(length = 5)", 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": "", "tags": [ "sketch" ], "keywordArguments": true, "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": "extrude", "summary": "Extend a 2-dimensional sketch through a third dimension in order to create new 3-dimensional volume, or if extruded into an existing volume, cut into an existing solid.", "description": "You can provide more than one sketch to extrude, and they will all be extruded in the same direction.", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "sketches", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "Which sketch or sketches should be extruded", "labelRequired": false }, { "name": "length", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "TyF64", "type": "number", "format": "double", "definitions": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "How far to extrude the given sketches", "labelRequired": true }, { "name": "symmetric", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": false, "description": "If true, the extrusion will happen symmetrically around the sketch. Otherwise, the extrusion will happen on only one side of the sketch.", "labelRequired": true }, { "name": "bidirectionalLength", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": false, "description": "If specified, will also extrude in the opposite direction to 'distance' to the specified distance. If 'symmetric' is true, this value is ignored.", "labelRequired": true }, { "name": "tagStart", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": false, "description": "A named tag for the face at the start of the extrusion, i.e. the original sketch", "labelRequired": true }, { "name": "tagEnd", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": false, "description": "A named tag for the face at the end of the extrusion, i.e. the new face created by extruding the original sketch", "labelRequired": true } ], "returnValue": { "name": "", "type": "[Solid]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_Solid", "type": "array", "items": { "$ref": "#/components/schemas/Solid" }, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> line(end = [10, 0])\n |> arc(angleStart = 120, angleEnd = 0, radius = 5)\n |> line(end = [5, 0])\n |> line(end = [0, 10])\n |> bezierCurve(control1 = [-10, 0], control2 = [2, 10], end = [-5, 10])\n |> line(end = [-5, -2])\n |> close()\n |> extrude(length = 10)", false ], [ "exampleSketch = startSketchOn(XZ)\n |> startProfile(at = [-10, 0])\n |> arc(angleStart = 120, angleEnd = -60, radius = 5)\n |> line(end = [10, 0])\n |> line(end = [5, 0])\n |> bezierCurve(control1 = [-3, 0], control2 = [2, 10], end = [-5, 10])\n |> line(end = [-4, 10])\n |> line(end = [-5, -2])\n |> close()\n\nexample = extrude(exampleSketch, length = 10)", false ], [ "exampleSketch = startSketchOn(XZ)\n |> startProfile(at = [-10, 0])\n |> arc(angleStart = 120, angleEnd = -60, radius = 5)\n |> line(end = [10, 0])\n |> line(end = [5, 0])\n |> bezierCurve(control1 = [-3, 0], control2 = [2, 10], end = [-5, 10])\n |> line(end = [-4, 10])\n |> line(end = [-5, -2])\n |> close()\n\nexample = extrude(exampleSketch, length = 20, symmetric = true)", false ], [ "exampleSketch = startSketchOn(XZ)\n |> startProfile(at = [-10, 0])\n |> arc(angleStart = 120, angleEnd = -60, radius = 5)\n |> line(end = [10, 0])\n |> line(end = [5, 0])\n |> bezierCurve(control1 = [-3, 0], control2 = [2, 10], end = [-5, 10])\n |> line(end = [-4, 10])\n |> line(end = [-5, -2])\n |> close()\n\nexample = extrude(exampleSketch, length = 10, bidirectionalLength = 50)", false ] ] }, { "name": "getCommonEdge", "summary": "Get the shared edge between two faces.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "faces", "type": "[TagIdentifier]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_TagIdentifier", "type": "array", "items": { "$ref": "#/components/schemas/TagIdentifier" }, "definitions": { "TagIdentifier": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string" } } } } }, "required": true, "includeInSnippet": true, "description": "The tags of the faces you want to find the common edge between", "labelRequired": true } ], "returnValue": { "name": "", "type": "Uuid", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Uuid", "type": "string", "format": "uuid" }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "// Get an edge shared between two faces, created after a chamfer.\n\n\nscale = 20\npart001 = startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> line(end = [0, scale])\n |> line(end = [scale, 0])\n |> line(end = [0, -scale])\n |> close(tag = $line0)\n |> extrude(length = 20, tagEnd = $end0)\n // We tag the chamfer to reference it later.\n |> chamfer(length = 10, tags = [getOppositeEdge(line0)], tag = $chamfer0)\n\n// Get the shared edge between the chamfer and the extrusion.\ncommonEdge = getCommonEdge(faces = [chamfer0, end0])\n\n// Chamfer the shared edge.\n// TODO: uncomment this when ssi for fillets lands\n// chamfer(part001, length = 5, tags = [commonEdge])", false ] ] }, { "name": "getNextAdjacentEdge", "summary": "Get the next adjacent edge to the edge given.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "edge", "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" } } }, "required": true, "includeInSnippet": true, "description": "The tag of the edge you want to find the next adjacent edge of.", "labelRequired": false } ], "returnValue": { "name": "", "type": "Uuid", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Uuid", "type": "string", "format": "uuid" }, "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 |> angledLine(angle = 60, length = 10)\n |> angledLine(angle = 120, length = 10)\n |> line(end = [-10, 0])\n |> angledLine(angle = 240, length = 10, tag = $referenceEdge)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)\n |> fillet(radius = 3, tags = [getNextAdjacentEdge(referenceEdge)])", false ] ] }, { "name": "getOppositeEdge", "summary": "Get the opposite edge to the edge given.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "edge", "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" } } }, "required": true, "includeInSnippet": true, "description": "The tag of the edge you want to find the opposite edge of.", "labelRequired": false } ], "returnValue": { "name": "", "type": "Uuid", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Uuid", "type": "string", "format": "uuid" }, "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 |> angledLine(angle = 60, length = 10)\n |> angledLine(angle = 120, length = 10)\n |> line(end = [-10, 0])\n |> angledLine(angle = 240, length = 10, tag = $referenceEdge)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)\n |> fillet(radius = 3, tags = [getOppositeEdge(referenceEdge)])", false ] ] }, { "name": "getPreviousAdjacentEdge", "summary": "Get the previous adjacent edge to the edge given.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "edge", "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" } } }, "required": true, "includeInSnippet": true, "description": "The tag of the edge you want to find the previous adjacent edge of.", "labelRequired": false } ], "returnValue": { "name": "", "type": "Uuid", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Uuid", "type": "string", "format": "uuid" }, "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 |> angledLine(angle = 60, length = 10)\n |> angledLine(angle = 120, length = 10)\n |> line(end = [-10, 0])\n |> angledLine(angle = 240, length = 10, tag = $referenceEdge)\n |> close()\n\nexample = extrude(exampleSketch, length = 5)\n |> fillet(radius = 3, tags = [getPreviousAdjacentEdge(referenceEdge)])", false ] ] }, { "name": "intersect", "summary": "Intersect returns the shared volume between multiple solids, preserving only overlapping regions.", "description": "Intersect computes the geometric intersection of multiple solid bodies, returning a new solid representing the volume that is common to all input solids. This operation is useful for determining shared material regions, verifying fit, and analyzing overlapping geometries in assemblies.", "tags": [ "solid" ], "keywordArguments": true, "args": [ { "name": "solids", "type": "[Solid]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_Solid", "type": "array", "items": { "$ref": "#/components/schemas/Solid" }, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 solids to intersect.", "labelRequired": false }, { "name": "tolerance", "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": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 tolerance to use for the intersection operation.", "labelRequired": true } ], "returnValue": { "name": "", "type": "[Solid]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_Solid", "type": "array", "items": { "$ref": "#/components/schemas/Solid" }, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": [ [ "// Intersect two cubes using the stdlib functions.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube(center = [0, 0], size = 10)\npart002 = cube(center = [7, 3], size = 5)\n |> translate(z = 1)\n\nintersectedPart = intersect([part001, part002])", false ], [ "// Intersect two cubes using operators.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube(center = [0, 0], size = 10)\npart002 = cube(center = [7, 3], size = 5)\n |> translate(z = 1)\n\n// This is the equivalent of: intersect([part001, part002])\nintersectedPart = part001 & part002", false ] ] }, { "name": "involuteCircular", "summary": "Extend the current sketch with a new involute circular curve.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "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": "lastSegX", "summary": "Extract the 'x' axis value of the last line segment in the provided 2-d sketch.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "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 whose line segment is being queried", "labelRequired": false } ], "returnValue": { "name": "", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "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 = [5, 0])\n |> line(end = [20, 5])\n |> line(end = [lastSegX(%), 0])\n |> line(end = [-15, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)", false ] ] }, { "name": "lastSegY", "summary": "Extract the 'y' axis value of the last line segment in the provided 2-d sketch.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "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 whose line segment is being queried", "labelRequired": false } ], "returnValue": { "name": "", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "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 = [5, 0])\n |> line(end = [20, 5])\n |> line(end = [0, lastSegY(%)])\n |> line(end = [-15, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)", false ] ] }, { "name": "line", "summary": "Extend the current sketch with a new straight line.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "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": "loft", "summary": "Create a 3D surface or solid by interpolating between two or more sketches.", "description": "The sketches need to closed and on the same plane.", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "sketches", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "Which sketches to loft. Must include at least 2 sketches.", "labelRequired": false }, { "name": "vDegree", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "NonZeroU32", "type": "integer", "format": "uint32", "minimum": 1.0, "definitions": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "Degree of the interpolation. Must be greater than zero. For example, use 2 for quadratic, or 3 for cubic interpolation in the V direction. This defaults to 2, if not specified.", "labelRequired": true }, { "name": "bezApproximateRational", "type": "bool", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Boolean", "type": "boolean", "definitions": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "Attempt to approximate rational curves (such as arcs) using a bezier. This will remove banding around interpolations between arcs and non-arcs. It may produce errors in other scenarios Over time, this field won't be necessary.", "labelRequired": true }, { "name": "baseCurveIndex", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_uint32", "type": "integer", "format": "uint32", "minimum": 0.0, "nullable": true, "definitions": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": false, "description": "This can be set to override the automatically determined topological base curve, which is usually the first section encountered.", "labelRequired": true }, { "name": "tolerance", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": false, "description": "Tolerance for the loft operation.", "labelRequired": true }, { "name": "tagStart", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": false, "description": "A named tag for the face at the start of the loft, i.e. the original sketch", "labelRequired": true }, { "name": "tagEnd", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": false, "description": "A named tag for the face at the end of the loft, i.e. the last sketch", "labelRequired": true } ], "returnValue": { "name": "", "type": "Solid", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "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" } }, "definitions": { "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "// Loft a square and a triangle.\nsquareSketch = startSketchOn(XY)\n |> startProfile(at = [-100, 200])\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ntriangleSketch = startSketchOn(offsetPlane(XY, offset = 75))\n |> startProfile(at = [0, 125])\n |> line(end = [-15, -30])\n |> line(end = [30, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\nloft([triangleSketch, squareSketch])", false ], [ "// Loft a square, a circle, and another circle.\nsquareSketch = startSketchOn(XY)\n |> startProfile(at = [-100, 200])\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch0 = startSketchOn(offsetPlane(XY, offset = 75))\n |> circle(center = [0, 100], radius = 50)\n\ncircleSketch1 = startSketchOn(offsetPlane(XY, offset = 150))\n |> circle(center = [0, 100], radius = 20)\n\nloft([\n squareSketch,\n circleSketch0,\n circleSketch1\n])", false ], [ "// Loft a square, a circle, and another circle with options.\nsquareSketch = startSketchOn(XY)\n |> startProfile(at = [-100, 200])\n |> line(end = [200, 0])\n |> line(end = [0, -200])\n |> line(end = [-200, 0])\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch0 = startSketchOn(offsetPlane(XY, offset = 75))\n |> circle(center = [0, 100], radius = 50)\n\ncircleSketch1 = startSketchOn(offsetPlane(XY, offset = 150))\n |> circle(center = [0, 100], radius = 20)\n\nloft(\n [\n squareSketch,\n circleSketch0,\n circleSketch1\n ],\n baseCurveIndex = 0,\n bezApproximateRational = false,\n tolerance = 0.000001,\n vDegree = 2,\n)", false ] ] }, { "name": "patternCircular2d", "summary": "Repeat a 2-dimensional sketch some number of times along a partial or complete circle some specified number of times. Each object may additionally be rotated along the circle, ensuring orientation of the solid with respect to the center of the circle is maintained.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "sketchSet", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "Which sketch(es) to pattern", "labelRequired": false }, { "name": "instances", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "uint32", "type": "integer", "format": "uint32", "minimum": 0.0, "definitions": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "The number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect.", "labelRequired": true }, { "name": "center", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "The center about which to make the pattern. This is a 2D vector.", "labelRequired": true }, { "name": "arcDegrees", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "double", "type": "number", "format": "double", "definitions": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "The arc angle (in degrees) to place the repetitions. Must be greater than 0.", "labelRequired": true }, { "name": "rotateDuplicates", "type": "bool", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Boolean", "type": "boolean", "definitions": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "Whether or not to rotate the duplicates as they are copied.", "labelRequired": true }, { "name": "useOriginal", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": false, "description": "If the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false.", "labelRequired": true } ], "returnValue": { "name": "", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "exampleSketch = startSketchOn(XZ)\n |> startProfile(at = [.5, 25])\n |> line(end = [0, 5])\n |> line(end = [-1, 0])\n |> line(end = [0, -5])\n |> close()\n |> patternCircular2d(\n center = [0, 0],\n instances = 13,\n arcDegrees = 360,\n rotateDuplicates = true,\n )\n\nexample = extrude(exampleSketch, length = 1)", false ] ] }, { "name": "patternCircular3d", "summary": "Repeat a 3-dimensional solid some number of times along a partial or complete circle some specified number of times. Each object may additionally be rotated along the circle, ensuring orientation of the solid with respect to the center of the circle is maintained.", "description": "", "tags": [ "solid" ], "keywordArguments": true, "args": [ { "name": "solids", "type": "[Solid]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_Solid", "type": "array", "items": { "$ref": "#/components/schemas/Solid" }, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 solid(s) to pattern", "labelRequired": false }, { "name": "instances", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "uint32", "type": "integer", "format": "uint32", "minimum": 0.0, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect.", "labelRequired": true }, { "name": "axis", "type": "[number]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_size_3_of_double", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 3, "minItems": 3, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 axis around which to make the pattern. This is a 3D vector", "labelRequired": true }, { "name": "center", "type": "Point3d", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_size_3_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 3, "minItems": 3, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 center about which to make the pattern. This is a 3D vector.", "labelRequired": true }, { "name": "arcDegrees", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "double", "type": "number", "format": "double", "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 arc angle (in degrees) to place the repetitions. Must be greater than 0.", "labelRequired": true }, { "name": "rotateDuplicates", "type": "bool", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Boolean", "type": "boolean", "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": "Whether or not to rotate the duplicates as they are copied.", "labelRequired": true }, { "name": "useOriginal", "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": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false.", "labelRequired": true } ], "returnValue": { "name": "", "type": "[Solid]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_Solid", "type": "array", "items": { "$ref": "#/components/schemas/Solid" }, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 |> circle(center = [0, 0], radius = 1)\n\nexample = extrude(exampleSketch, length = -5)\n |> patternCircular3d(\n axis = [1, -1, 0],\n center = [10, -20, 0],\n instances = 11,\n arcDegrees = 360,\n rotateDuplicates = true,\n )", false ] ] }, { "name": "patternLinear2d", "summary": "Repeat a 2-dimensional sketch along some dimension, with a dynamic amount of distance between each repetition, some specified number of times.", "description": "", "tags": [], "keywordArguments": true, "args": [ { "name": "sketches", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "The sketch(es) to duplicate", "labelRequired": false }, { "name": "instances", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "uint32", "type": "integer", "format": "uint32", "minimum": 0.0, "definitions": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "The number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect.", "labelRequired": true }, { "name": "distance", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "TyF64", "type": "number", "format": "double", "definitions": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "Distance between each repetition. Also known as 'spacing'.", "labelRequired": true }, { "name": "axis", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "The axis of the pattern. A 2D vector.", "labelRequired": true }, { "name": "useOriginal", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": false, "description": "If the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false.", "labelRequired": true } ], "returnValue": { "name": "", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "exampleSketch = startSketchOn(XZ)\n |> circle(center = [0, 0], radius = 1)\n |> patternLinear2d(axis = [1, 0], instances = 7, distance = 4)\n\nexample = extrude(exampleSketch, length = 1)", false ] ] }, { "name": "patternLinear3d", "summary": "Repeat a 3-dimensional solid along a linear path, with a dynamic amount of distance between each repetition, some specified number of times.", "description": "///", "tags": [ "solid" ], "keywordArguments": true, "args": [ { "name": "solids", "type": "[Solid]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_Solid", "type": "array", "items": { "$ref": "#/components/schemas/Solid" }, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 solid(s) to duplicate", "labelRequired": false }, { "name": "instances", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "uint32", "type": "integer", "format": "uint32", "minimum": 0.0, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect.", "labelRequired": true }, { "name": "distance", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "TyF64", "type": "number", "format": "double", "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": "Distance between each repetition. Also known as 'spacing'.", "labelRequired": true }, { "name": "axis", "type": "Point3d", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_size_3_of_TyF64", "type": "array", "items": { "$ref": "#/components/schemas/TyF64" }, "maxItems": 3, "minItems": 3, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 axis of the pattern. A 2D vector.", "labelRequired": true }, { "name": "useOriginal", "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": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false.", "labelRequired": true } ], "returnValue": { "name": "", "type": "[Solid]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_Solid", "type": "array", "items": { "$ref": "#/components/schemas/Solid" }, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 = [0, 2])\n |> line(end = [3, 1])\n |> line(end = [0, -4])\n |> close()\n\nexample = extrude(exampleSketch, length = 1)\n |> patternLinear3d(axis = [1, 0, 1], instances = 7, distance = 6)", false ], [ "// Pattern a whole sketch on face.\nsize = 100\ncase = startSketchOn(XY)\n |> startProfile(at = [-size, -size])\n |> line(end = [2 * size, 0])\n |> line(end = [0, 2 * size])\n |> tangentialArc(endAbsolute = [-size, size])\n |> close(%)\n |> extrude(length = 65)\n\nthing1 = startSketchOn(case, face = END)\n |> circle(center = [-size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\nthing2 = startSketchOn(case, face = END)\n |> circle(center = [size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\n // We pass in the \"case\" here since we want to pattern the whole sketch.\n// And the case was the base of the sketch.\npatternLinear3d(\n case,\n axis = [1, 0, 0],\n distance = 250,\n instances = 2,\n)", false ], [ "// Pattern an object on a face.\nsize = 100\ncase = startSketchOn(XY)\n |> startProfile(at = [-size, -size])\n |> line(end = [2 * size, 0])\n |> line(end = [0, 2 * size])\n |> tangentialArc(endAbsolute = [-size, size])\n |> close(%)\n |> extrude(length = 65)\n\nthing1 = startSketchOn(case, face = END)\n |> circle(center = [-size / 2, -size / 2], radius = 25)\n |> extrude(length = 50)\n\n// We pass in `thing1` here with `useOriginal` since we want to pattern just this object on the face.\npatternLinear3d(\n thing1,\n axis = [1, 0, 0],\n distance = size,\n instances = 2,\n useOriginal = true,\n)", false ] ] }, { "name": "patternTransform", "summary": "Repeat a 3-dimensional solid, changing it each time.", "description": "Replicates the 3D solid, applying a transformation function to each replica. Transformation function could alter rotation, scale, visibility, position, etc.\n\nThe `patternTransform` call itself takes a number for how many total instances of the shape should be. For example, if you use a circle with `patternTransform(instances = 4, transform = f)` then there will be 4 circles: the original, and 3 created by replicating the original and calling the transform function on each.\n\nThe transform function takes a single parameter: an integer representing which number replication the transform is for. E.g. the first replica to be transformed will be passed the argument `1`. This simplifies your math: the transform function can rely on id `0` being the original instance passed into the `patternTransform`. See the examples.\n\nThe transform function returns a transform object. All properties of the object are optional, they each default to \"no change\". So the overall transform object defaults to \"no change\" too. Its properties are:\n\n - `translate` (3D point)\n\n Translates the replica, moving its position in space.\n\n - `replicate` (bool)\n\n If false, this ID will not actually copy the object. It'll be skipped.\n\n - `scale` (3D point)\n\n Stretches the object, multiplying its width in the given dimension by the point's component in that direction.\n\n - `rotation` (object, with the following properties)\n\n - `rotation.axis` (a 3D point, defaults to the Z axis)\n\n - `rotation.angle` (number of degrees)\n\n - `rotation.origin` (either \"local\" i.e. rotate around its own center, \"global\" i.e. rotate around the scene's center, or a 3D point, defaults to \"local\")", "tags": [ "solid" ], "keywordArguments": true, "args": [ { "name": "solids", "type": "[Solid]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_Solid", "type": "array", "items": { "$ref": "#/components/schemas/Solid" }, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 solid(s) to duplicate", "labelRequired": false }, { "name": "instances", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "uint32", "type": "integer", "format": "uint32", "minimum": 0.0, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect.", "labelRequired": true }, { "name": "transform", "type": "FunctionSource", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "FunctionSource", "type": "null", "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": "How each replica should be transformed. The transform function takes a single parameter: an integer representing which number replication the transform is for. E.g. the first replica to be transformed will be passed the argument `1`. This simplifies your math: the transform function can rely on id `0` being the original instance passed into the `patternTransform`. See the examples.", "labelRequired": true }, { "name": "useOriginal", "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": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false.", "labelRequired": true } ], "returnValue": { "name": "", "type": "[Solid]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_Solid", "type": "array", "items": { "$ref": "#/components/schemas/Solid" }, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": [ [ "// Each instance will be shifted along the X axis.\nfn transform(@id) {\n return { translate = [4 * id, 0, 0] }\n}\n\n// Sketch 4 cylinders.\nsketch001 = startSketchOn(XZ)\n |> circle(center = [0, 0], radius = 2)\n |> extrude(length = 5)\n |> patternTransform(instances = 4, transform = transform)", false ], [ "// Each instance will be shifted along the X axis,\n// with a gap between the original (at x = 0) and the first replica\n// (at x = 8). This is because `id` starts at 1.\nfn transform(@id) {\n return { translate = [4 * (1 + id), 0, 0] }\n}\n\nsketch001 = startSketchOn(XZ)\n |> circle(center = [0, 0], radius = 2)\n |> extrude(length = 5)\n |> patternTransform(instances = 4, transform = transform)", false ], [ "fn cube(length, center) {\n l = length / 2\n x = center[0]\n y = center[1]\n p0 = [-l + x, -l + y]\n p1 = [-l + x, l + y]\n p2 = [l + x, l + y]\n p3 = [l + x, -l + y]\n\n return startSketchOn(XY)\n |> startProfile(at = p0)\n |> line(endAbsolute = p1)\n |> line(endAbsolute = p2)\n |> line(endAbsolute = p3)\n |> line(endAbsolute = p0)\n |> close()\n |> extrude(length = length)\n}\n\nwidth = 20\nfn transform(@i) {\n return {\n // Move down each time.\n translate = [0, 0, -i * width],\n // Make the cube longer, wider and flatter each time.\n scale = [\n pow(1.1, exp = i),\n pow(1.1, exp = i),\n pow(0.9, exp = i)\n ],\n // Turn by 15 degrees each time.\n rotation = { angle = 15 * i, origin = \"local\" }\n }\n}\n\nmyCubes = cube(length = width, center = [100, 0])\n |> patternTransform(instances = 25, transform = transform)", false ], [ "fn cube(length, center) {\n l = length / 2\n x = center[0]\n y = center[1]\n p0 = [-l + x, -l + y]\n p1 = [-l + x, l + y]\n p2 = [l + x, l + y]\n p3 = [l + x, -l + y]\n\n return startSketchOn(XY)\n |> startProfile(at = p0)\n |> line(endAbsolute = p1)\n |> line(endAbsolute = p2)\n |> line(endAbsolute = p3)\n |> line(endAbsolute = p0)\n |> close()\n |> extrude(length = length)\n}\n\nwidth = 20\nfn transform(@i) {\n return {\n translate = [0, 0, -i * width],\n rotation = {\n angle = 90 * i,\n // Rotate around the overall scene's origin.\n origin = \"global\"\n }\n }\n}\nmyCubes = cube(length = width, center = [100, 100])\n |> patternTransform(instances = 4, transform = transform)", false ], [ "// Parameters\nr = 50 // base radius\nh = 10 // layer height\nt = 0.005 // taper factor [0-1)\n// Defines how to modify each layer of the vase.\n// Each replica is shifted up the Z axis, and has a smoothly-varying radius\nfn transform(@replicaId) {\n scale = r * abs(1 - (t * replicaId)) * (5 + cos((replicaId / 8): number(rad)))\n return {\n translate = [0, 0, replicaId * 10],\n scale = [scale, scale, 0]\n }\n}\n// Each layer is just a pretty thin cylinder.\nfn layer() {\n return startSketchOn(XY)\n // or some other plane idk\n |> circle(center = [0, 0], radius = 1, tag = $tag1)\n |> extrude(length = h)\n}\n// The vase is 100 layers tall.\n// The 100 layers are replica of each other, with a slight transformation applied to each.\nvase = layer()\n |> patternTransform(instances = 100, transform = transform)", false ], [ "fn transform(@i) {\n // Transform functions can return multiple transforms. They'll be applied in order.\n return [\n { translate = [30 * i, 0, 0] },\n { rotation = { angle = 45 * i } }\n ]\n}\nstartSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> polygon(\n radius = 10,\n numSides = 4,\n center = [0, 0],\n inscribed = false,\n )\n |> extrude(length = 4)\n |> patternTransform(instances = 3, transform = transform)", false ] ] }, { "name": "patternTransform2d", "summary": "Just like patternTransform, but works on 2D sketches not 3D solids.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "sketches", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "The sketch(es) to duplicate", "labelRequired": false }, { "name": "instances", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "uint32", "type": "integer", "format": "uint32", "minimum": 0.0, "definitions": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "The number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect.", "labelRequired": true }, { "name": "transform", "type": "FunctionSource", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "FunctionSource", "type": "null", "definitions": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "How each replica should be transformed. The transform function takes a single parameter: an integer representing which number replication the transform is for. E.g. the first replica to be transformed will be passed the argument `1`. This simplifies your math: the transform function can rely on id `0` being the original instance passed into the `patternTransform`. See the examples.", "labelRequired": true }, { "name": "useOriginal", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": false, "description": "If the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false.", "labelRequired": true } ], "returnValue": { "name": "", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "// Each instance will be shifted along the X axis.\nfn transform(@id) {\n return { translate = [4 * id, 0] }\n}\n\n// Sketch 4 circles.\nsketch001 = startSketchOn(XZ)\n |> circle(center = [0, 0], radius = 2)\n |> patternTransform2d(instances = 4, transform = transform)", false ] ] }, { "name": "polygon", "summary": "Create a regular polygon with the specified number of sides that is either inscribed or circumscribed around a circle of the specified radius.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "sketchSurfaceOrGroup", "type": "SketchOrSurface", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "SketchOrSurface", "description": "A sketch surface or a sketch.", "anyOf": [ { "$ref": "#/components/schemas/SketchSurface" }, { "$ref": "#/components/schemas/Sketch" } ], "definitions": { "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" } } }, "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" } ] } } }, "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": "Plane or surface to sketch on", "labelRequired": false }, { "name": "radius", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "TyF64", "type": "number", "format": "double", "definitions": { "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" } } }, "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" } ] } } }, "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 radius of the polygon", "labelRequired": true }, { "name": "numSides", "type": "u64", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "uint64", "type": "integer", "format": "uint64", "minimum": 0.0, "definitions": { "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" } } }, "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" } ] } } }, "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 number of sides in the polygon", "labelRequired": true }, { "name": "center", "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": { "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" } } }, "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" } ] } } }, "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 center point of the polygon", "labelRequired": true }, { "name": "inscribed", "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": { "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" } } }, "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" } ] } } }, "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": "Whether the polygon is inscribed (true, the default) or circumscribed (false) about a circle with the specified radius", "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": [ [ "// Create a regular hexagon inscribed in a circle of radius 10\nhex = startSketchOn(XY)\n |> polygon(\n radius = 10,\n numSides = 6,\n center = [0, 0],\n inscribed = true,\n )\n\nexample = extrude(hex, length = 5)", false ], [ "// Create a square circumscribed around a circle of radius 5\nsquare = startSketchOn(XY)\n |> polygon(\n radius = 5.0,\n numSides = 4,\n center = [10, 10],\n inscribed = false,\n )\nexample = extrude(square, length = 5)", false ] ] }, { "name": "profileStart", "summary": "Extract the provided 2-dimensional sketch's profile's origin value.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "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" ], "keywordArguments": true, "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" ], "keywordArguments": true, "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": "rotate", "summary": "Rotate a solid or a sketch.", "description": "This is really useful for assembling parts together. You can create a part and then rotate it to the correct orientation.\n\nFor sketches, you can use this to rotate a sketch and then loft it with another sketch.\n\n### Using Roll, Pitch, and Yaw\n\nWhen rotating a part in 3D space, \"roll,\" \"pitch,\" and \"yaw\" refer to the three rotational axes used to describe its orientation: roll is rotation around the longitudinal axis (front-to-back), pitch is rotation around the lateral axis (wing-to-wing), and yaw is rotation around the vertical axis (up-down); essentially, it's like tilting the part on its side (roll), tipping the nose up or down (pitch), and turning it left or right (yaw).\n\nSo, in the context of a 3D model:\n\n- **Roll**: Imagine spinning a pencil on its tip - that's a roll movement.\n\n- **Pitch**: Think of a seesaw motion, where the object tilts up or down along its side axis.\n\n- **Yaw**: Like turning your head left or right, this is a rotation around the vertical axis\n\n### Using an Axis and Angle\n\nWhen rotating a part around an axis, you specify the axis of rotation and the angle of rotation.", "tags": [ "transform" ], "keywordArguments": true, "args": [ { "name": "objects", "type": "SolidOrSketchOrImportedGeometry", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "SolidOrSketchOrImportedGeometry", "description": "Data for a solid, sketch, or an imported geometry.", "oneOf": [ { "description": "Data for an imported geometry.", "type": "object", "required": [ "id", "type", "value" ], "properties": { "type": { "type": "string", "enum": [ "importedGeometry" ] }, "id": { "description": "The ID of the imported geometry.", "type": "string", "format": "uuid" }, "value": { "description": "The original file paths.", "type": "array", "items": { "type": "string" } } } }, { "type": [ "object", "array" ], "items": { "$ref": "#/components/schemas/Solid" }, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "solidSet" ] } } }, { "type": [ "object", "array" ], "items": { "$ref": "#/components/schemas/Sketch" }, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "sketchSet" ] } } } ], "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 solid, sketch, or set of solids or sketches to rotate.", "labelRequired": false }, { "name": "roll", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_double", "type": "number", "format": "double", "nullable": true, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": "The roll angle in degrees. Must be between -360 and 360. Default is 0 if not given.", "labelRequired": true }, { "name": "pitch", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_double", "type": "number", "format": "double", "nullable": true, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": "The pitch angle in degrees. Must be between -360 and 360. Default is 0 if not given.", "labelRequired": true }, { "name": "yaw", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_double", "type": "number", "format": "double", "nullable": true, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": "The yaw angle in degrees. Must be between -360 and 360. Default is 0 if not given.", "labelRequired": true }, { "name": "axis", "type": "[number]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_Array_size_3_of_double", "type": "array", "items": { "type": "number", "format": "double" }, "maxItems": 3, "minItems": 3, "nullable": true, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 axis to rotate around. Must be used with `angle`.", "labelRequired": true }, { "name": "angle", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_double", "type": "number", "format": "double", "nullable": true, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 angle to rotate in degrees. Must be used with `axis`. Must be between -360 and 360.", "labelRequired": true }, { "name": "global", "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": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 true, the transform is applied in global space. The origin of the model will move. By default, the transform is applied in local sketch axis, therefore the origin will not move.", "labelRequired": true } ], "returnValue": { "name": "", "type": "SolidOrSketchOrImportedGeometry", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "SolidOrSketchOrImportedGeometry", "description": "Data for a solid, sketch, or an imported geometry.", "oneOf": [ { "description": "Data for an imported geometry.", "type": "object", "required": [ "id", "type", "value" ], "properties": { "type": { "type": "string", "enum": [ "importedGeometry" ] }, "id": { "description": "The ID of the imported geometry.", "type": "string", "format": "uuid" }, "value": { "description": "The original file paths.", "type": "array", "items": { "type": "string" } } } }, { "type": [ "object", "array" ], "items": { "$ref": "#/components/schemas/Solid" }, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "solidSet" ] } } }, { "type": [ "object", "array" ], "items": { "$ref": "#/components/schemas/Sketch" }, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "sketchSet" ] } } } ], "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": [ [ "// Rotate a pipe with roll, pitch, and yaw.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfile(at = [0.05, 0.05])\n |> line(end = [0, 7])\n |> tangentialArc(angle = 90, radius = 5)\n |> line(end = [-3, 0])\n |> tangentialArc(angle = -90, radius = 5)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> subtract2d(tool = pipeHole)\n |> sweep(path = sweepPath)\n |> rotate(roll = 10, pitch = 10, yaw = 90)", false ], [ "// Rotate a pipe with just roll.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfile(at = [0.05, 0.05])\n |> line(end = [0, 7])\n |> tangentialArc(angle = 90, radius = 5)\n |> line(end = [-3, 0])\n |> tangentialArc(angle = -90, radius = 5)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> subtract2d(tool = pipeHole)\n |> sweep(path = sweepPath)\n |> rotate(roll = 10)", false ], [ "// Rotate a pipe about an axis with an angle.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfile(at = [0.05, 0.05])\n |> line(end = [0, 7])\n |> tangentialArc(angle = 90, radius = 5)\n |> line(end = [-3, 0])\n |> tangentialArc(angle = -90, radius = 5)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> subtract2d(tool = pipeHole)\n |> sweep(path = sweepPath)\n |> rotate(axis = [0, 0, 1.0], angle = 90)", false ], [ "// Rotate an imported model.\n\n\nimport \"tests/inputs/cube.sldprt\" as cube\n\ncube\n |> rotate(axis = [0, 0, 1.0], angle = 9)", false ], [ "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfile(sketch001, at = [-200, 23.86])\n |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001)\n |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61)\n |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfile(sketch002, at = [0, 0])\n |> yLine(length = 231.81)\n |> tangentialArc(radius = 80, angle = -90)\n |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Rotate the sweeps.\nrotate(parts, axis = [0, 0, 1.0], angle = 90)", false ], [ "// Translate and rotate a sketch to create a loft.\nsketch001 = startSketchOn(XY)\n\nfn square() {\n return startProfile(sketch001, at = [-10, 10])\n |> xLine(length = 20)\n |> yLine(length = -20)\n |> xLine(length = -20)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n}\n\nprofile001 = square()\n\nprofile002 = square()\n |> translate(x = 0, y = 0, z = 20)\n |> rotate(axis = [0, 0, 1.0], angle = 45)\n\nloft([profile001, profile002])", false ] ] }, { "name": "scale", "summary": "Scale a solid or a sketch.", "description": "This is really useful for resizing parts. You can create a part and then scale it to the correct size.\n\nFor sketches, you can use this to scale a sketch and then loft it with another sketch.\n\nBy default the transform is applied in local sketch axis, therefore the origin will not move.\n\nIf you want to apply the transform in global space, set `global` to `true`. The origin of the model will move. If the model is not centered on origin and you scale globally it will look like the model moves and gets bigger at the same time. Say you have a square `(1,1) - (1,2) - (2,2) - (2,1)` and you scale by 2 globally it will become `(2,2) - (2,4)`...etc so the origin has moved from `(1.5, 1.5)` to `(2,2)`.", "tags": [ "transform" ], "keywordArguments": true, "args": [ { "name": "objects", "type": "SolidOrSketchOrImportedGeometry", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "SolidOrSketchOrImportedGeometry", "description": "Data for a solid, sketch, or an imported geometry.", "oneOf": [ { "description": "Data for an imported geometry.", "type": "object", "required": [ "id", "type", "value" ], "properties": { "type": { "type": "string", "enum": [ "importedGeometry" ] }, "id": { "description": "The ID of the imported geometry.", "type": "string", "format": "uuid" }, "value": { "description": "The original file paths.", "type": "array", "items": { "type": "string" } } } }, { "type": [ "object", "array" ], "items": { "$ref": "#/components/schemas/Solid" }, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "solidSet" ] } } }, { "type": [ "object", "array" ], "items": { "$ref": "#/components/schemas/Sketch" }, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "sketchSet" ] } } } ], "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 solid, sketch, or set of solids or sketches to scale.", "labelRequired": false }, { "name": "x", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_double", "type": "number", "format": "double", "nullable": true, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": "The scale factor for the x axis. Default is 1 if not provided.", "labelRequired": true }, { "name": "y", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_double", "type": "number", "format": "double", "nullable": true, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": "The scale factor for the y axis. Default is 1 if not provided.", "labelRequired": true }, { "name": "z", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_double", "type": "number", "format": "double", "nullable": true, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": "The scale factor for the z axis. Default is 1 if not provided.", "labelRequired": true }, { "name": "global", "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": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 true, the transform is applied in global space. The origin of the model will move. By default, the transform is applied in local sketch axis, therefore the origin will not move.", "labelRequired": true } ], "returnValue": { "name": "", "type": "SolidOrSketchOrImportedGeometry", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "SolidOrSketchOrImportedGeometry", "description": "Data for a solid, sketch, or an imported geometry.", "oneOf": [ { "description": "Data for an imported geometry.", "type": "object", "required": [ "id", "type", "value" ], "properties": { "type": { "type": "string", "enum": [ "importedGeometry" ] }, "id": { "description": "The ID of the imported geometry.", "type": "string", "format": "uuid" }, "value": { "description": "The original file paths.", "type": "array", "items": { "type": "string" } } } }, { "type": [ "object", "array" ], "items": { "$ref": "#/components/schemas/Solid" }, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "solidSet" ] } } }, { "type": [ "object", "array" ], "items": { "$ref": "#/components/schemas/Sketch" }, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "sketchSet" ] } } } ], "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": [ [ "// Scale a pipe.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfile(at = [0.05, 0.05])\n |> line(end = [0, 7])\n |> tangentialArc(angle = 90, radius = 5)\n |> line(end = [-3, 0])\n |> tangentialArc(angle = -90, radius = 5)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> subtract2d(tool = pipeHole)\n |> sweep(path = sweepPath)\n |> scale(z = 2.5)", false ], [ "// Scale an imported model.\n\n\nimport \"tests/inputs/cube.sldprt\" as cube\n\ncube\n |> scale(y = 2.5)", false ], [ "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfile(sketch001, at = [-200, 23.86])\n |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001)\n |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61)\n |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfile(sketch002, at = [0, 0])\n |> yLine(length = 231.81)\n |> tangentialArc(radius = 80, angle = -90)\n |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Scale the sweep.\nscale(parts, z = 0.5)", false ] ] }, { "name": "segAng", "summary": "Compute the angle (in degrees) of the provided line segment.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "tag", "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" } } }, "required": true, "includeInSnippet": true, "description": "The line segment being queried by its tag", "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": [ [ "exampleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> line(end = [10, 0])\n |> line(end = [5, 10], tag = $seg01)\n |> line(end = [-10, 0])\n |> angledLine(angle = segAng(seg01), length = 10)\n |> line(end = [-10, 0])\n |> angledLine(angle = segAng(seg01), length = -15)\n |> close()\n\nexample = extrude(exampleSketch, length = 4)", false ] ] }, { "name": "segEnd", "summary": "Compute the ending point of the provided line segment.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "tag", "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" } } }, "required": true, "includeInSnippet": true, "description": "The line segment being queried by its tag", "labelRequired": false } ], "returnValue": { "name": "", "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": { "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "w = 15\ncube = startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> line(end = [w, 0], tag = $line1)\n |> line(end = [0, w], tag = $line2)\n |> line(end = [-w, 0], tag = $line3)\n |> line(end = [0, -w], tag = $line4)\n |> close()\n |> extrude(length = 5)\n\nfn cylinder(radius, tag) {\n return startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> circle(radius = radius, center = segEnd(tag))\n |> extrude(length = radius)\n}\n\ncylinder(radius = 1, tag = line1)\ncylinder(radius = 2, tag = line2)\ncylinder(radius = 3, tag = line3)\ncylinder(radius = 4, tag = line4)", false ] ] }, { "name": "segEndX", "summary": "Compute the ending point of the provided line segment along the 'x' axis.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "tag", "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" } } }, "required": true, "includeInSnippet": true, "description": "The line segment being queried by its tag", "labelRequired": false } ], "returnValue": { "name": "", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "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 = [20, 0], tag = $thing)\n |> line(end = [0, 5])\n |> line(end = [segEndX(thing), 0])\n |> line(end = [-20, 10])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)", false ] ] }, { "name": "segEndY", "summary": "Compute the ending point of the provided line segment along the 'y' axis.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "tag", "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" } } }, "required": true, "includeInSnippet": true, "description": "The line segment being queried by its tag", "labelRequired": false } ], "returnValue": { "name": "", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "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 = [20, 0])\n |> line(end = [0, 3], tag = $thing)\n |> line(end = [-10, 0])\n |> line(end = [0, segEndY(thing)])\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)", false ] ] }, { "name": "segLen", "summary": "Compute the length of the provided line segment.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "tag", "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" } } }, "required": true, "includeInSnippet": true, "description": "The line segment being queried by its tag", "labelRequired": false } ], "returnValue": { "name": "", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "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 = 60, length = 10, tag = $thing)\n |> tangentialArc(angle = -120, radius = 5)\n |> angledLine(angle = -60, length = segLen(thing))\n |> close()\n\nexample = extrude(exampleSketch, length = 5)", false ] ] }, { "name": "segStart", "summary": "Compute the starting point of the provided line segment.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "tag", "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" } } }, "required": true, "includeInSnippet": true, "description": "The line segment being queried by its tag", "labelRequired": false } ], "returnValue": { "name": "", "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": { "TyF64": { "type": "number", "format": "double" } } }, "required": true, "includeInSnippet": true, "labelRequired": true }, "unpublished": false, "deprecated": false, "examples": [ [ "w = 15\ncube = startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> line(end = [w, 0], tag = $line1)\n |> line(end = [0, w], tag = $line2)\n |> line(end = [-w, 0], tag = $line3)\n |> line(end = [0, -w], tag = $line4)\n |> close()\n |> extrude(length = 5)\n\nfn cylinder(radius, tag) {\n return startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> circle(radius = radius, center = segStart(tag))\n |> extrude(length = radius)\n}\n\ncylinder(radius = 1, tag = line1)\ncylinder(radius = 2, tag = line2)\ncylinder(radius = 3, tag = line3)\ncylinder(radius = 4, tag = line4)", false ] ] }, { "name": "segStartX", "summary": "Compute the starting point of the provided line segment along the 'x' axis.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "tag", "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" } } }, "required": true, "includeInSnippet": true, "description": "The line segment being queried by its tag", "labelRequired": false } ], "returnValue": { "name": "", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "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 = [20, 0], tag = $thing)\n |> line(end = [0, 5])\n |> line(end = [20 - segStartX(thing), 0])\n |> line(end = [-20, 10])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)", false ] ] }, { "name": "segStartY", "summary": "Compute the starting point of the provided line segment along the 'y' axis.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "tag", "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" } } }, "required": true, "includeInSnippet": true, "description": "The line segment being queried by its tag", "labelRequired": false } ], "returnValue": { "name": "", "type": "number", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "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 = [20, 0])\n |> line(end = [0, 3], tag = $thing)\n |> line(end = [-10, 0])\n |> line(end = [0, 20 - segStartY(thing)])\n |> line(end = [-10, 0])\n |> close()\n\nexample = extrude(exampleSketch, length = 5)", false ] ] }, { "name": "startProfile", "summary": "Start a new profile at a given point.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "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, "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" ], "keywordArguments": true, "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": "subtract", "summary": "Subtract removes tool solids from base solids, leaving the remaining material.", "description": "Performs a boolean subtraction operation, removing the volume of one or more tool solids from one or more base solids. The result is a new solid representing the material that remains after all tool solids have been cut away. This function is essential for machining simulations, cavity creation, and complex multi-body part modeling.", "tags": [ "solid" ], "keywordArguments": true, "args": [ { "name": "solids", "type": "[Solid]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_Solid", "type": "array", "items": { "$ref": "#/components/schemas/Solid" }, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 solids to use as the base to subtract from.", "labelRequired": false }, { "name": "tools", "type": "[Solid]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_Solid", "type": "array", "items": { "$ref": "#/components/schemas/Solid" }, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 solids to subtract.", "labelRequired": true }, { "name": "tolerance", "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": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 tolerance to use for the subtraction operation.", "labelRequired": true } ], "returnValue": { "name": "", "type": "[Solid]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_Solid", "type": "array", "items": { "$ref": "#/components/schemas/Solid" }, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": [ [ "// Subtract a cylinder from a cube using the stdlib functions.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube(center = [0, 0], size = 10)\npart002 = cube(center = [7, 3], size = 5)\n |> translate(z = 1)\n\nsubtractedPart = subtract([part001], tools = [part002])", false ], [ "// Subtract a cylinder from a cube using operators.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube(center = [0, 0], size = 10)\npart002 = cube(center = [7, 3], size = 5)\n |> translate(z = 1)\n\n// This is the equivalent of: subtract([part001], tools=[part002])\nsubtractedPart = part001 - part002", false ] ] }, { "name": "subtract2d", "summary": "Use a 2-dimensional sketch to cut a hole in another 2-dimensional sketch.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "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": "sweep", "summary": "Extrude a sketch along a path.", "description": "This, like extrude, is able to create a 3-dimensional solid from a 2-dimensional sketch. However, unlike extrude, this creates a solid by using the extent of the sketch as its path. This is useful for creating more complex shapes that can't be created with a simple extrusion.\n\nYou can provide more than one sketch to sweep, and they will all be swept along the same path.", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "sketches", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } } } }, "required": true, "includeInSnippet": true, "description": "The sketch or set of sketches that should be swept in space", "labelRequired": false }, { "name": "path", "type": "SweepPath", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "SweepPath", "description": "A path to sweep along.", "anyOf": [ { "$ref": "#/components/schemas/Sketch" }, { "$ref": "#/components/schemas/Helix" } ], "definitions": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } }, "Helix": { "description": "A helix.", "type": "object", "required": [ "angleStart", "artifactId", "ccw", "revolutions", "units", "value" ], "properties": { "value": { "description": "The id of the helix.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "revolutions": { "description": "Number of revolutions.", "type": "number", "format": "double" }, "angleStart": { "description": "Start angle (in degrees).", "type": "number", "format": "double" }, "ccw": { "description": "Is the helix rotation counter clockwise?", "type": "boolean" }, "cylinderId": { "description": "The cylinder the helix was created on.", "type": "string", "format": "uuid", "nullable": true }, "units": { "$ref": "#/components/schemas/UnitLen" } } } } }, "required": true, "includeInSnippet": true, "description": "The path to sweep the sketch along", "labelRequired": true }, { "name": "sectional", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } }, "Helix": { "description": "A helix.", "type": "object", "required": [ "angleStart", "artifactId", "ccw", "revolutions", "units", "value" ], "properties": { "value": { "description": "The id of the helix.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "revolutions": { "description": "Number of revolutions.", "type": "number", "format": "double" }, "angleStart": { "description": "Start angle (in degrees).", "type": "number", "format": "double" }, "ccw": { "description": "Is the helix rotation counter clockwise?", "type": "boolean" }, "cylinderId": { "description": "The cylinder the helix was created on.", "type": "string", "format": "uuid", "nullable": true }, "units": { "$ref": "#/components/schemas/UnitLen" } } } } }, "required": false, "description": "If true, the sweep will be broken up into sub-sweeps (extrusions, revolves, sweeps) based on the trajectory path components.", "labelRequired": true }, { "name": "tolerance", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } }, "Helix": { "description": "A helix.", "type": "object", "required": [ "angleStart", "artifactId", "ccw", "revolutions", "units", "value" ], "properties": { "value": { "description": "The id of the helix.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "revolutions": { "description": "Number of revolutions.", "type": "number", "format": "double" }, "angleStart": { "description": "Start angle (in degrees).", "type": "number", "format": "double" }, "ccw": { "description": "Is the helix rotation counter clockwise?", "type": "boolean" }, "cylinderId": { "description": "The cylinder the helix was created on.", "type": "string", "format": "uuid", "nullable": true }, "units": { "$ref": "#/components/schemas/UnitLen" } } } } }, "required": false, "description": "Tolerance for this operation", "labelRequired": true }, { "name": "relativeTo", "type": "string", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Nullable_String", "type": "string", "nullable": true, "definitions": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } }, "Helix": { "description": "A helix.", "type": "object", "required": [ "angleStart", "artifactId", "ccw", "revolutions", "units", "value" ], "properties": { "value": { "description": "The id of the helix.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "revolutions": { "description": "Number of revolutions.", "type": "number", "format": "double" }, "angleStart": { "description": "Start angle (in degrees).", "type": "number", "format": "double" }, "ccw": { "description": "Is the helix rotation counter clockwise?", "type": "boolean" }, "cylinderId": { "description": "The cylinder the helix was created on.", "type": "string", "format": "uuid", "nullable": true }, "units": { "$ref": "#/components/schemas/UnitLen" } } } } }, "required": false, "description": "What is the sweep relative to? Can be either 'sketchPlane' or 'trajectoryCurve'. Defaults to trajectoryCurve.", "labelRequired": true }, { "name": "tagStart", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } }, "Helix": { "description": "A helix.", "type": "object", "required": [ "angleStart", "artifactId", "ccw", "revolutions", "units", "value" ], "properties": { "value": { "description": "The id of the helix.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "revolutions": { "description": "Number of revolutions.", "type": "number", "format": "double" }, "angleStart": { "description": "Start angle (in degrees).", "type": "number", "format": "double" }, "ccw": { "description": "Is the helix rotation counter clockwise?", "type": "boolean" }, "cylinderId": { "description": "The cylinder the helix was created on.", "type": "string", "format": "uuid", "nullable": true }, "units": { "$ref": "#/components/schemas/UnitLen" } } } } }, "required": false, "description": "A named tag for the face at the start of the sweep, i.e. the original sketch", "labelRequired": true }, { "name": "tagEnd", "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": { "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" } ] } } } ] }, "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" } ] } } } ] }, "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" }, "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" } } }, "Helix": { "description": "A helix.", "type": "object", "required": [ "angleStart", "artifactId", "ccw", "revolutions", "units", "value" ], "properties": { "value": { "description": "The id of the helix.", "type": "string", "format": "uuid" }, "artifactId": { "description": "The artifact ID.", "allOf": [ { "$ref": "#/components/schemas/ArtifactId" } ] }, "revolutions": { "description": "Number of revolutions.", "type": "number", "format": "double" }, "angleStart": { "description": "Start angle (in degrees).", "type": "number", "format": "double" }, "ccw": { "description": "Is the helix rotation counter clockwise?", "type": "boolean" }, "cylinderId": { "description": "The cylinder the helix was created on.", "type": "string", "format": "uuid", "nullable": true }, "units": { "$ref": "#/components/schemas/UnitLen" } } } } }, "required": false, "description": "A named tag for the face at the end of the sweep", "labelRequired": true } ], "returnValue": { "name": "", "type": "[Solid]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_Solid", "type": "array", "items": { "$ref": "#/components/schemas/Solid" }, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": [ [ "// Create a pipe using a sweep.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfile(at = [0.05, 0.05])\n |> line(end = [0, 7])\n |> tangentialArc(angle = 90, radius = 5)\n |> line(end = [-3, 0])\n |> tangentialArc(angle = -90, radius = 5)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> subtract2d(tool = pipeHole)\n |> sweep(path = sweepPath)", false ], [ "// Create a spring by sweeping around a helix path.\n\n// Create a helix around the Z axis.\nhelixPath = helix(\n angleStart = 0,\n ccw = true,\n revolutions = 4,\n length = 10,\n radius = 5,\n axis = Z,\n)\n\n// Create a spring by sweeping around the helix path.\nspringSketch = startSketchOn(XZ)\n |> circle(center = [5, 0], radius = 1)\n |> sweep(path = helixPath)", false ], [ "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfile(sketch001, at = [-200, 23.86])\n |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001)\n |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61)\n |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfile(sketch002, at = [0, 0])\n |> yLine(length = 231.81)\n |> tangentialArc(radius = 80, angle = -90)\n |> xLine(length = 384.93)\n\nsweep([rectangleSketch, circleSketch], path = sweepPath)", false ], [ "// Sectionally sweep one sketch along the path\n\n\nsketch001 = startSketchOn(XY)\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfile(sketch002, at = [0, 0])\n |> yLine(length = 231.81)\n |> tangentialArc(radius = 80, angle = -90)\n |> xLine(length = 384.93)\n\nsweep(circleSketch, path = sweepPath, sectional = true)", false ] ] }, { "name": "tangentToEnd", "summary": "Returns the angle coming out of the end of the segment in degrees.", "description": "", "tags": [ "sketch" ], "keywordArguments": true, "args": [ { "name": "tag", "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" } } }, "required": true, "includeInSnippet": true, "description": "The line segment being queried by its tag", "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": [ [ "// Horizontal pill.\npillSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> line(end = [20, 0])\n |> tangentialArc(end = [0, 10], tag = $arc1)\n |> angledLine(angle = tangentToEnd(arc1), length = 20)\n |> tangentialArc(end = [0, -10])\n |> close()\n\npillExtrude = extrude(pillSketch, length = 10)", false ], [ "// Vertical pill. Use absolute coordinate for arc.\npillSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> line(end = [0, 20])\n |> tangentialArc(endAbsolute = [10, 20], tag = $arc1)\n |> angledLine(angle = tangentToEnd(arc1), length = 20)\n |> tangentialArc(end = [-10, 0])\n |> close()\n\npillExtrude = extrude(pillSketch, length = 10)", false ], [ "rectangleSketch = startSketchOn(XZ)\n |> startProfile(at = [0, 0])\n |> line(end = [10, 0], tag = $seg1)\n |> angledLine(angle = tangentToEnd(seg1), length = 10)\n |> line(end = [0, 10])\n |> line(end = [-20, 0])\n |> close()\n\nrectangleExtrude = extrude(rectangleSketch, length = 10)", false ], [ "bottom = startSketchOn(XY)\n |> startProfile(at = [0, 0])\n |> arc(endAbsolute = [10, 10], interiorAbsolute = [5, 1], tag = $arc1)\n |> angledLine(angle = tangentToEnd(arc1), length = 20)\n |> close()", false ], [ "circSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 3, tag = $circ)\n\ntriangleSketch = startSketchOn(XY)\n |> startProfile(at = [-5, 0])\n |> angledLine(angle = tangentToEnd(circ), length = 10)\n |> line(end = [-15, 0])\n |> close()", 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" ], "keywordArguments": true, "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`.", "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": "translate", "summary": "Move a solid or a sketch.", "description": "This is really useful for assembling parts together. You can create a part and then move it to the correct location.\n\nTranslate is really useful for sketches if you want to move a sketch and then rotate it using the `rotate` function to create a loft.", "tags": [ "transform" ], "keywordArguments": true, "args": [ { "name": "objects", "type": "SolidOrSketchOrImportedGeometry", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "SolidOrSketchOrImportedGeometry", "description": "Data for a solid, sketch, or an imported geometry.", "oneOf": [ { "description": "Data for an imported geometry.", "type": "object", "required": [ "id", "type", "value" ], "properties": { "type": { "type": "string", "enum": [ "importedGeometry" ] }, "id": { "description": "The ID of the imported geometry.", "type": "string", "format": "uuid" }, "value": { "description": "The original file paths.", "type": "array", "items": { "type": "string" } } } }, { "type": [ "object", "array" ], "items": { "$ref": "#/components/schemas/Solid" }, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "solidSet" ] } } }, { "type": [ "object", "array" ], "items": { "$ref": "#/components/schemas/Sketch" }, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "sketchSet" ] } } } ], "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 solid, sketch, or set of solids or sketches to move.", "labelRequired": false }, { "name": "x", "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": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": "The amount to move the solid or sketch along the x axis. Defaults to 0 if not provided.", "labelRequired": true }, { "name": "y", "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": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": "The amount to move the solid or sketch along the y axis. Defaults to 0 if not provided.", "labelRequired": true }, { "name": "z", "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": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": "The amount to move the solid or sketch along the z axis. Defaults to 0 if not provided.", "labelRequired": true }, { "name": "global", "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": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 true, the transform is applied in global space. The origin of the model will move. By default, the transform is applied in local sketch axis, therefore the origin will not move.", "labelRequired": true } ], "returnValue": { "name": "", "type": "SolidOrSketchOrImportedGeometry", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "SolidOrSketchOrImportedGeometry", "description": "Data for a solid, sketch, or an imported geometry.", "oneOf": [ { "description": "Data for an imported geometry.", "type": "object", "required": [ "id", "type", "value" ], "properties": { "type": { "type": "string", "enum": [ "importedGeometry" ] }, "id": { "description": "The ID of the imported geometry.", "type": "string", "format": "uuid" }, "value": { "description": "The original file paths.", "type": "array", "items": { "type": "string" } } } }, { "type": [ "object", "array" ], "items": { "$ref": "#/components/schemas/Solid" }, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "solidSet" ] } } }, { "type": [ "object", "array" ], "items": { "$ref": "#/components/schemas/Sketch" }, "required": [ "type" ], "properties": { "type": { "type": "string", "enum": [ "sketchSet" ] } } } ], "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": [ [ "// Move a pipe.\n\n// Create a path for the sweep.\nsweepPath = startSketchOn(XZ)\n |> startProfile(at = [0.05, 0.05])\n |> line(end = [0, 7])\n |> tangentialArc(angle = 90, radius = 5)\n |> line(end = [-3, 0])\n |> tangentialArc(angle = -90, radius = 5)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn(XY)\n |> circle(center = [0, 0], radius = 2)\n |> subtract2d(tool = pipeHole)\n |> sweep(path = sweepPath)\n |> translate(x = 1.0, y = 1.0, z = 2.5)", false ], [ "// Move an imported model.\n\n\nimport \"tests/inputs/cube.sldprt\" as cube\n\n// Circle so you actually see the move.\nstartSketchOn(XY)\n |> circle(center = [-10, -10], radius = 10)\n |> extrude(length = 10)\n\ncube\n |> translate(x = 10.0, y = 10.0, z = 2.5)", false ], [ "// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn(XY)\nrectangleSketch = startProfile(sketch001, at = [-200, 23.86])\n |> angledLine(angle = 0, length = 73.47, tag = $rectangleSegmentA001)\n |> angledLine(angle = segAng(rectangleSegmentA001) - 90, length = 50.61)\n |> angledLine(angle = segAng(rectangleSegmentA001), length = -segLen(rectangleSegmentA001))\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn(YZ)\nsweepPath = startProfile(sketch002, at = [0, 0])\n |> yLine(length = 231.81)\n |> tangentialArc(radius = 80, angle = -90)\n |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Move the sweeps.\ntranslate(\n parts,\n x = 1.0,\n y = 1.0,\n z = 2.5,\n)", false ], [ "// Move a sketch.\n\n\nfn square(@length) {\n l = length / 2\n p0 = [-l, -l]\n p1 = [-l, l]\n p2 = [l, l]\n p3 = [l, -l]\n\n return startSketchOn(XY)\n |> startProfile(at = p0)\n |> line(endAbsolute = p1)\n |> line(endAbsolute = p2)\n |> line(endAbsolute = p3)\n |> close()\n}\n\nsquare(10)\n |> translate(x = 5, y = 5)\n |> extrude(length = 10)", false ], [ "// Translate and rotate a sketch to create a loft.\nsketch001 = startSketchOn(XY)\n\nfn square() {\n return startProfile(sketch001, at = [-10, 10])\n |> xLine(length = 20)\n |> yLine(length = -20)\n |> xLine(length = -20)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n}\n\nprofile001 = square()\n\nprofile002 = square()\n |> translate(z = 20)\n |> rotate(axis = [0, 0, 1.0], angle = 45)\n\nloft([profile001, profile002])", false ] ] }, { "name": "union", "summary": "Union two or more solids into a single solid.", "description": "", "tags": [ "solid" ], "keywordArguments": true, "args": [ { "name": "solids", "type": "[Solid]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_Solid", "type": "array", "items": { "$ref": "#/components/schemas/Solid" }, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 solids to union.", "labelRequired": false }, { "name": "tolerance", "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": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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 tolerance to use for the union operation.", "labelRequired": true } ], "returnValue": { "name": "", "type": "[Solid]", "schema": { "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", "title": "Array_of_Solid", "type": "array", "items": { "$ref": "#/components/schemas/Solid" }, "definitions": { "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" } } }, "ArtifactId": { "type": "string", "format": "uuid" }, "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" } ] } } } ] }, "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" ] } } } ] }, "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" } } } ] }, "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" } } }, "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": [ [ "// Union two cubes using the stdlib functions.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube(center = [0, 0], size = 10)\npart002 = cube(center = [7, 3], size = 5)\n |> translate(z = 1)\n\nunionedPart = union([part001, part002])", false ], [ "// Union two cubes using operators.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube(center = [0, 0], size = 10)\npart002 = cube(center = [7, 3], size = 5)\n |> translate(z = 1)\n\n// This is the equivalent of: union([part001, part002])\nunionedPart = part001 + part002", false ], [ "// Union two cubes using the more programmer-friendly operator.\n// NOTE: This will not work when using codemods through the UI.\n// Codemods will generate the stdlib function call instead.\n\n\nfn cube(center, size) {\n return startSketchOn(XY)\n |> startProfile(at = [center[0] - size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] - size])\n |> line(endAbsolute = [center[0] + size, center[1] + size])\n |> line(endAbsolute = [center[0] - size, center[1] + size])\n |> close()\n |> extrude(length = 10)\n}\n\npart001 = cube(center = [0, 0], size = 10)\npart002 = cube(center = [7, 3], size = 5)\n |> translate(z = 1)\n\n // This is the equivalent of: union([part001, part002])\n // Programmers will understand `|` as a union operation, but mechanical engineers\n// will understand `+`, we made both work.\nunionedPart = part001 | part002", 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" ], "keywordArguments": true, "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" ], "keywordArguments": true, "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 ] ] } ]