From e17c6e272c6ef72ca47e7e3396e738f7c39a2f85 Mon Sep 17 00:00:00 2001 From: Kurt Hutten Date: Tue, 18 Mar 2025 11:14:12 +1100 Subject: [PATCH] Add 3 point arc (#5722) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * bare minimum * start of segment util added * remove redundant handle * some probably buggy handling of arc handles, can fix later * probably bug implementation of update args, but data flow through is mostly there can fix bugs after * fix update for arc * fix math for center handle * fix up length indicator * tweak math * stub out xState logic for arc * more progress on adding point and click, implemented more of sketchLineHelper for arc * small unrelated tweak * fix up draft arc bugs * fix arc last click * fix draft segment animation and add comment * add draft point snapping for arcs * add helper stuff to arc * clone arc point and click as base for arc-three-point * rust change for arc three point * can draw three point arc * make arcTo editable * can add new three point arc, so long as it continues existing profile * get overlays working * make snap to for continuing profile work for three point arcs * add draft animation * tangent issue fix * action rename * tmp test fix up * fix silly bug * fix couple problems causing tests to fail * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * fix up * add delet segment test for new segments * update docs * draft segments should look right * add test for dragging new segment handles * arc tools can be chained now * make three point arc can start a new profile (not only extend existing paths) * add test for equiping and unequiping the tool plus drawing with it * fix console noise * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * clean up * update rust/docs * put toolbar mode check into fixture * do thing for lee * use TEST_COLORSs * fix colors * don't await file write * remove commented code * remove unneeded template strings * power to **2 * remove magic numbers * more string templates * some odd bits of clean up * arc should be enable in dev * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores) * add new simulation test * fix test code from kwark migration * issues Frank found * fix deleting half complete ark * fix * small fix on dele index * tsc post main merge * fix up snaping to profile start * add cross hari for three point arc * block snapping if it's the only segment * add tests for canceling arcTo halfway through --------- Co-authored-by: github-actions[bot] --- docs/kcl/std.json | 17296 ++++++++++++++++ docs/kcl/types/Path.md | 24 + e2e/playwright/fixtures/toolbarFixture.ts | 26 + .../prompt-to-edit-snapshot-tests.spec.ts | 79 +- e2e/playwright/regression-tests.spec.ts | 10 +- e2e/playwright/sketch-tests.spec.ts | 348 +- e2e/playwright/snapshot-tests.spec.ts | 64 +- ...Millimeter-scale-1-Google-Chrome-linux.png | Bin 61625 -> 61627 bytes ...hould-look-right-1-Google-Chrome-linux.png | Bin 45899 -> 45976 bytes ...hould-look-right-1-Google-Chrome-linux.png | Bin 43148 -> 43268 bytes ...hould-look-right-2-Google-Chrome-linux.png | Bin 46222 -> 46321 bytes ...hould-look-right-3-Google-Chrome-linux.png | Bin 0 -> 50645 bytes ...hould-look-right-4-Google-Chrome-linux.png | Bin 0 -> 56296 bytes ...hould-look-right-5-Google-Chrome-linux.png | Bin 0 -> 70248 bytes ...example-snapshots--change-colour.snap.json | 33 + .../testing-segment-overlays.spec.ts | 308 +- rust/kcl-lib/src/execution/geometry.rs | 33 + rust/kcl-lib/src/std/extrude.rs | 11 + rust/kcl-lib/src/std/sketch.rs | 43 +- src/Toolbar.tsx | 2 +- src/clientSideScene/ClientSideSceneComp.tsx | 24 +- src/clientSideScene/sceneEntities.ts | 1070 +- src/clientSideScene/segments.ts | 739 +- src/components/ModelingMachineProvider.tsx | 94 +- src/lang/langHelpers.ts | 4 + src/lang/std/sketch.ts | 665 +- src/lang/std/sketchcombos.ts | 14 +- src/lang/std/stdTypes.ts | 5 + src/lib/toolbar.ts | 38 +- src/lib/utils.test.ts | 54 + src/lib/utils.ts | 19 + src/machines/modelingMachine.ts | 352 +- 32 files changed, 20989 insertions(+), 366 deletions(-) create mode 100644 e2e/playwright/snapshot-tests.spec.ts-snapshots/Draft-segments-should-look-right-3-Google-Chrome-linux.png create mode 100644 e2e/playwright/snapshot-tests.spec.ts-snapshots/Draft-segments-should-look-right-4-Google-Chrome-linux.png create mode 100644 e2e/playwright/snapshot-tests.spec.ts-snapshots/Draft-segments-should-look-right-5-Google-Chrome-linux.png create mode 100644 e2e/playwright/snapshots/prompt-to-edit/prompt-to-edit-snapshot-tests-spec-ts--edit-with-ai-example-snapshots--change-colour.snap.json diff --git a/docs/kcl/std.json b/docs/kcl/std.json index 26fe0c456..2cd271bb4 100644 --- a/docs/kcl/std.json +++ b/docs/kcl/std.json @@ -577,6 +577,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -2201,6 +2293,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -3836,6 +4020,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -5344,6 +5620,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -6908,6 +7276,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -8529,6 +8989,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -10037,6 +10589,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -11601,6 +12245,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -13222,6 +13958,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -14730,6 +15558,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -16294,6 +17214,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -17933,6 +18945,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -19441,6 +20545,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -20994,6 +22190,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -22600,6 +23888,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -24108,6 +25488,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -25672,6 +27144,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -27278,6 +28842,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -28786,6 +30442,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -30350,6 +32098,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -32233,6 +34073,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -33737,6 +35669,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -35243,6 +37267,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -36748,6 +38864,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -38255,6 +40463,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -39556,6 +41856,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -41064,6 +43456,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -42628,6 +45112,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -44244,6 +46820,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -45752,6 +48420,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -47316,6 +50076,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -49465,6 +52317,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -50973,6 +53917,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -52537,6 +55573,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -54456,6 +57584,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -55961,6 +59181,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -57468,6 +60780,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -58995,6 +62399,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -60582,6 +64078,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -62466,6 +66054,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -63976,6 +67656,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -65481,6 +69253,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -66990,6 +70854,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -67900,6 +71856,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -70137,6 +74185,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -71646,6 +75786,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -72556,6 +76788,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -74133,6 +78457,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -75642,6 +80058,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -77207,6 +81715,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -78847,6 +83447,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -80352,6 +85044,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -82160,6 +86944,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -83674,6 +88550,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -85179,6 +90147,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -86686,6 +91746,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -88210,6 +93362,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -89736,6 +94980,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -91323,6 +96659,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -93653,6 +99081,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -95222,6 +100742,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -96509,6 +102121,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -98073,6 +103777,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -99574,6 +105370,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -101465,6 +107353,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -103034,6 +109014,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -104768,6 +110840,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -106360,6 +112524,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -108117,6 +114373,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -109628,6 +115976,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -111138,6 +117578,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -112647,6 +119179,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -114212,6 +120836,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -115837,6 +122553,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -117343,6 +124151,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -118847,6 +125747,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -120354,6 +127346,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -121859,6 +128943,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -123660,6 +130836,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -126337,6 +133605,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -128690,6 +136050,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -131047,6 +138499,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -132556,6 +140100,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -134052,6 +141688,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -136011,6 +143739,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -137517,6 +145337,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -139027,6 +146939,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -140532,6 +148536,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -142036,6 +150132,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -143541,6 +151729,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -145048,6 +153328,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -146867,6 +155239,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -148373,6 +156837,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -149883,6 +158439,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -151393,6 +160041,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -152898,6 +161638,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -154402,6 +163234,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -155907,6 +164831,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -157414,6 +166430,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -158633,6 +167741,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -160139,6 +169339,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -161644,6 +170936,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -163154,6 +172538,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -164659,6 +174135,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -166166,6 +175734,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -167985,6 +177645,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -169491,6 +179243,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -170996,6 +180840,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -172506,6 +182442,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -174011,6 +184039,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -175518,6 +185638,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -177039,6 +187251,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -178545,6 +188849,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -180049,6 +190445,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -181554,6 +192042,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -183061,6 +193641,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -184285,6 +194957,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -185791,6 +196555,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -187295,6 +198151,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -188800,6 +199748,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -190307,6 +201347,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -192930,6 +204062,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -194438,6 +205662,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -195347,6 +206663,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -198152,6 +209560,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -200890,6 +212390,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -202087,6 +213679,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -203683,6 +215367,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -205274,6 +217050,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -208092,6 +219960,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -210828,6 +222788,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -213565,6 +225617,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -215934,6 +228078,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -218670,6 +230906,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -221023,6 +233351,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -223760,6 +236180,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -225253,6 +237765,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -227049,6 +239653,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -228624,6 +241320,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -230130,6 +242918,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -231636,6 +244516,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -233142,6 +246114,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -234653,6 +247717,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -236158,6 +249314,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -237662,6 +250910,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -239217,6 +252557,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -240829,6 +254261,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -242339,6 +255863,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -243844,6 +257460,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -245399,6 +259107,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -247314,6 +261114,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -248819,6 +262711,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -250326,6 +264310,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -251868,6 +265944,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -253738,6 +267906,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -255246,6 +269506,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -256308,6 +270660,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -258505,6 +272949,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -260179,6 +274715,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -261866,6 +276494,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -262950,6 +277670,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -264462,6 +279274,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -266011,6 +280915,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -267560,6 +282556,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -269411,6 +284499,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -270711,6 +285891,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -272219,6 +287491,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -273783,6 +289147,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -275378,6 +290834,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -276886,6 +292434,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -278450,6 +294090,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -280045,6 +295777,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -281553,6 +297377,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -283117,6 +299033,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -285160,6 +301168,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -286670,6 +302770,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -288175,6 +304367,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -289730,6 +306014,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -290945,6 +307321,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -292451,6 +308919,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -293957,6 +310517,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -295465,6 +312117,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -297030,6 +313774,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -298607,6 +315443,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -300113,6 +317041,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -301619,6 +318639,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -303127,6 +320239,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", @@ -304692,6 +321896,98 @@ } } }, + { + "description": "A base path.", + "type": "object", + "required": [ + "__geoMeta", + "from", + "p1", + "p2", + "p3", + "to", + "type", + "units" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "ArcThreePoint" + ] + }, + "p1": { + "description": "Point 1 of the arc (base on the end of previous segment)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p2": { + "description": "Point 2 of the arc (interior kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "p3": { + "description": "Point 3 of the arc (end kwarg)", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "from": { + "description": "The from point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "to": { + "description": "The to point.", + "type": "array", + "items": { + "type": "number", + "format": "double" + }, + "maxItems": 2, + "minItems": 2 + }, + "units": { + "$ref": "#/components/schemas/UnitLen" + }, + "tag": { + "description": "The tag of the path.", + "allOf": [ + { + "$ref": "#/components/schemas/TagDeclarator" + } + ], + "nullable": true + }, + "__geoMeta": { + "description": "Metadata.", + "allOf": [ + { + "$ref": "#/components/schemas/GeoMeta" + } + ] + } + } + }, { "description": "A path that is horizontal.", "type": "object", diff --git a/docs/kcl/types/Path.md b/docs/kcl/types/Path.md index dfd5e22b5..7ae908090 100644 --- a/docs/kcl/types/Path.md +++ b/docs/kcl/types/Path.md @@ -126,6 +126,30 @@ A base path. | `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No | +---- +A base path. + +**Type:** `object` + + + + + +## Properties + +| Property | Type | Description | Required | +|----------|------|-------------|----------| +| `type` |enum: `ArcThreePoint`| | No | +| `p1` |`[number, number]`| Point 1 of the arc (base on the end of previous segment) | No | +| `p2` |`[number, number]`| Point 2 of the arc (interior kwarg) | No | +| `p3` |`[number, number]`| Point 3 of the arc (end kwarg) | No | +| `from` |`[number, number]`| The from point. | No | +| `to` |`[number, number]`| The to point. | No | +| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No | +| [`tag`](/docs/kcl/types/tag) |[`TagDeclarator`](/docs/kcl/types#tag-declaration)| The tag of the path. | No | +| `__geoMeta` |[`GeoMeta`](/docs/kcl/types/GeoMeta)| Metadata. | No | + + ---- A path that is horizontal. diff --git a/e2e/playwright/fixtures/toolbarFixture.ts b/e2e/playwright/fixtures/toolbarFixture.ts index 892a5775e..2f6279024 100644 --- a/e2e/playwright/fixtures/toolbarFixture.ts +++ b/e2e/playwright/fixtures/toolbarFixture.ts @@ -8,6 +8,7 @@ import { } from '../test-utils' import { SidebarType } from 'components/ModelingSidebar/ModelingPanes' import { SIDEBAR_BUTTON_SUFFIX } from 'lib/constants' +import { ToolbarModeName } from 'lib/toolbar' export class ToolbarFixture { public page: Page @@ -120,6 +121,15 @@ export class ToolbarFixture { // this is for the engine animation, as it takes 500ms to complete await this.page.waitForTimeout(600) } + private _getMode = () => + this.page.locator('[data-current-mode]').getAttribute('data-current-mode') + expectToolbarMode = { + toBe: (mode: ToolbarModeName) => expect.poll(this._getMode).toEqual(mode), + not: { + toBe: (mode: ToolbarModeName) => + expect.poll(this._getMode).not.toEqual(mode), + }, + } private _serialiseFileTree = async () => { return this.page @@ -176,6 +186,22 @@ export class ToolbarFixture { ).toBeVisible() await this.page.getByTestId('dropdown-circle-three-points').click() } + selectArc = async () => { + await this.page + .getByRole('button', { name: 'caret down Tangential Arc:' }) + .click() + await expect(this.page.getByTestId('dropdown-arc')).toBeVisible() + await this.page.getByTestId('dropdown-arc').click() + } + selectThreePointArc = async () => { + await this.page + .getByRole('button', { name: 'caret down Tangential Arc:' }) + .click() + await expect( + this.page.getByTestId('dropdown-three-point-arc') + ).toBeVisible() + await this.page.getByTestId('dropdown-three-point-arc').click() + } async closePane(paneId: SidebarType) { return closePane(this.page, paneId + SIDEBAR_BUTTON_SUFFIX) diff --git a/e2e/playwright/prompt-to-edit-snapshot-tests.spec.ts b/e2e/playwright/prompt-to-edit-snapshot-tests.spec.ts index b0d67318b..df19c18f6 100644 --- a/e2e/playwright/prompt-to-edit-snapshot-tests.spec.ts +++ b/e2e/playwright/prompt-to-edit-snapshot-tests.spec.ts @@ -53,46 +53,47 @@ sketch003 = startSketchOn('XY') |> close() extrude003 = extrude(sketch003, length = 20) ` +test.describe('edit with AI example snapshots', () => { + test( + `change colour`, + { tag: '@snapshot' }, + async ({ context, homePage, cmdBar, editor, page, scene }) => { + await context.addInitScript((file) => { + localStorage.setItem('persistCode', file) + }, file) + await homePage.goToModelingScene() + await scene.waitForExecutionDone() -test( - `change colour`, - { tag: '@snapshot' }, - async ({ context, homePage, cmdBar, editor, page, scene }) => { - await context.addInitScript((file) => { - localStorage.setItem('persistCode', file) - }, file) - await homePage.goToModelingScene() - await scene.waitForExecutionDone() + const body1CapCoords = { x: 571, y: 351 } + const [clickBody1Cap] = scene.makeMouseHelpers( + body1CapCoords.x, + body1CapCoords.y + ) + const yellow: [number, number, number] = [179, 179, 131] + const submittingToast = page.getByText('Submitting to Text-to-CAD API...') - const body1CapCoords = { x: 571, y: 351 } - const [clickBody1Cap] = scene.makeMouseHelpers( - body1CapCoords.x, - body1CapCoords.y - ) - const yellow: [number, number, number] = [179, 179, 131] - const submittingToast = page.getByText('Submitting to Text-to-CAD API...') - - await test.step('wait for scene to load select body and check selection came through', async () => { - await scene.expectPixelColor([134, 134, 134], body1CapCoords, 15) - await clickBody1Cap() - await scene.expectPixelColor(yellow, body1CapCoords, 20) - await editor.expectState({ - highlightedCode: '', - activeLines: ['|>startProfileAt([-73.64,-42.89],%)'], - diagnostics: [], + await test.step('wait for scene to load select body and check selection came through', async () => { + await scene.expectPixelColor([134, 134, 134], body1CapCoords, 15) + await clickBody1Cap() + await scene.expectPixelColor(yellow, body1CapCoords, 20) + await editor.expectState({ + highlightedCode: '', + activeLines: ['|>startProfileAt([-73.64,-42.89],%)'], + diagnostics: [], + }) }) - }) - await test.step('fire off edit prompt', async () => { - await cmdBar.captureTextToCadRequestSnapshot(test.info()) - await cmdBar.openCmdBar('promptToEdit') - // being specific about the color with a hex means asserting pixel color is more stable - await page - .getByTestId('cmd-bar-arg-value') - .fill('make this neon green please, use #39FF14') - await page.waitForTimeout(100) - await cmdBar.progressCmdBar() - await expect(submittingToast).toBeVisible() - }) - } -) + await test.step('fire off edit prompt', async () => { + await cmdBar.captureTextToCadRequestSnapshot(test.info()) + await cmdBar.openCmdBar('promptToEdit') + // being specific about the color with a hex means asserting pixel color is more stable + await page + .getByTestId('cmd-bar-arg-value') + .fill('make this neon green please, use #39FF14') + await page.waitForTimeout(100) + await cmdBar.progressCmdBar() + await expect(submittingToast).toBeVisible() + }) + } + ) +}) diff --git a/e2e/playwright/regression-tests.spec.ts b/e2e/playwright/regression-tests.spec.ts index af3747f81..3544e65dd 100644 --- a/e2e/playwright/regression-tests.spec.ts +++ b/e2e/playwright/regression-tests.spec.ts @@ -319,7 +319,6 @@ extrude001 = extrude(sketch001, length = 50) 'when engine fails export we handle the failure and alert the user', { tag: '@skipLocalEngine' }, async ({ scene, page, homePage, cmdBar }) => { - const u = await getUtils(page) await page.addInitScript( async ({ code }) => { localStorage.setItem('persistCode', code) @@ -636,11 +635,8 @@ extrude001 = extrude(sketch001, length = 50) await homePage.goToModelingScene() }) - const toolBarMode = () => - page.locator('[data-currentMode]').getAttribute('data-currentMode') - await test.step('Start sketch and select a plane', async () => { - await expect.poll(toolBarMode).toEqual('modeling') + await toolbar.expectToolbarMode.toBe('modeling') // Click the start sketch button await toolbar.startSketchPlaneSelection() @@ -649,10 +645,10 @@ extrude001 = extrude(sketch001, length = 50) // Check that the modeling toolbar doesn't appear during the animation // The animation typically takes around 500ms, so we'll check for a second - await expect.poll(toolBarMode, { timeout: 1000 }).not.toEqual('modeling') + await toolbar.expectToolbarMode.not.toBe('modeling') // After animation completes, we should see the sketching toolbar - await expect.poll(toolBarMode).toEqual('sketching') + await toolbar.expectToolbarMode.toBe('sketching') }) }) diff --git a/e2e/playwright/sketch-tests.spec.ts b/e2e/playwright/sketch-tests.spec.ts index adae0bbcb..69b40589b 100644 --- a/e2e/playwright/sketch-tests.spec.ts +++ b/e2e/playwright/sketch-tests.spec.ts @@ -12,6 +12,7 @@ import { } from './test-utils' import { uuidv4, roundOff } from 'lib/utils' import { SceneFixture } from './fixtures/sceneFixture' +import { CmdBarFixture } from './fixtures/cmdBarFixture' test.describe('Sketch tests', { tag: ['@skipWin'] }, () => { test('multi-sketch file shows multiple Edit Sketch buttons', async ({ @@ -191,7 +192,8 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002) page: Page, homePage: HomePageFixture, openPanes: string[], - scene: SceneFixture + scene: SceneFixture, + cmdBar: CmdBarFixture ) => { // Load the app with the code panes await page.addInitScript(async () => { @@ -201,13 +203,22 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002) |> startProfileAt([4.61, -14.01], %) |> line(end = [12.73, -0.09]) |> tangentialArcTo([24.95, -5.38], %) + |> arcTo({ + interior = [20.18, -1.7], + end = [11.82, -1.16] + }, %) + |> arc({ + radius = 5.92, + angleStart = -89.36, + angleEnd = 135.81 + }, %) |> close()` ) }) const u = await getUtils(page) await homePage.goToModelingScene() - await scene.waitForExecutionDone() + await scene.settled(cmdBar) await expect( page.getByRole('button', { name: 'Start Sketch' }) @@ -242,7 +253,17 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002) |> startProfileAt([4.61, -14.01], %) |> line(end = [12.73, -0.09]) |> tangentialArcTo([24.95, -5.38], %) - |> close()`) + |> arcTo({ + interior = [20.18, -1.7], + end = [11.82, -1.16] + }, %) + |> arc({ + radius = 5.92, + angleStart = -89.36, + angleEnd = 135.81 + }, %) + |> close() +`) } else { // Ensure we don't see the code. await expect(u.codeLocator).not.toBeVisible() @@ -272,7 +293,7 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002) const step5 = { steps: 5 } - await expect(page.getByTestId('segment-overlay')).toHaveCount(2) + await expect(page.getByTestId('segment-overlay')).toHaveCount(5) // drag startProfileAt handle await page.mouse.move(startPX[0], startPX[1]) @@ -310,22 +331,93 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002) await expect(page.locator('.cm-content')).not.toHaveText(prevContent) } + // drag arcTo interior handle (three point arc) + const arcToHandle = await u.getBoundingBox('[data-overlay-index="2"]') + await page.mouse.move(arcToHandle.x, arcToHandle.y - 5) + await page.mouse.down() + await page.mouse.move( + arcToHandle.x - dragPX, + arcToHandle.y + dragPX, + step5 + ) + await page.mouse.up() + await page.waitForTimeout(100) + if (openPanes.includes('code')) { + await expect(page.locator('.cm-content')).not.toHaveText(prevContent) + prevContent = await page.locator('.cm-content').innerText() + } + + // drag arcTo end handle (three point arc) + const arcToEndHandle = await u.getBoundingBox('[data-overlay-index="3"]') + await page.mouse.move(arcToEndHandle.x, arcToEndHandle.y - 5) + await page.mouse.down() + await page.mouse.move( + arcToEndHandle.x - dragPX, + arcToEndHandle.y + dragPX, + step5 + ) + await page.mouse.up() + await page.waitForTimeout(100) + if (openPanes.includes('code')) { + await expect(page.locator('.cm-content')).not.toHaveText(prevContent) + prevContent = await page.locator('.cm-content').innerText() + } + + // drag arc radius handle + const arcRadiusHandle = await u.getBoundingBox('[data-overlay-index="4"]') + await page.mouse.move(arcRadiusHandle.x, arcRadiusHandle.y - 5) + await page.mouse.down() + await page.mouse.move( + arcRadiusHandle.x - dragPX, + arcRadiusHandle.y + dragPX, + step5 + ) + await page.mouse.up() + await page.waitForTimeout(100) + if (openPanes.includes('code')) { + await expect(page.locator('.cm-content')).not.toHaveText(prevContent) + } + + // drag arc center handle (we'll have to hardcode the position because it doesn't have a overlay near the handle) + const arcCenterHandle = { x: 745, y: 214 } + await page.mouse.move(arcCenterHandle.x, arcCenterHandle.y - 5) + await page.mouse.down() + await page.mouse.move( + arcCenterHandle.x - dragPX, + arcCenterHandle.y + dragPX, + step5 + ) + await page.mouse.up() + await page.waitForTimeout(100) + if (openPanes.includes('code')) { + await expect(page.locator('.cm-content')).not.toHaveText(prevContent) + } + // Open the code pane await u.openKclCodePanel() // expect the code to have changed await expect(page.locator('.cm-content')) .toHaveText(`sketch001 = startSketchOn('XZ') - |> startProfileAt([6.44, -12.07], %) - |> line(end = [14.72, 1.97]) - |> tangentialArcTo([24.95, -5.38], %) - |> line(end = [1.97, 2.06]) - |> close()`) + |> startProfileAt([6.44, -12.07], %) + |> line(end = [14.72, 1.97]) + |> tangentialArcTo([26.92, -3.32], %) + |> arcTo({ + interior = [18.11, -3.73], + end = [9.77, -3.19] + }, %) + |> arc({ + radius = 3.75, + angleStart = -58.29, + angleEnd = 161.17 + }, %) + |> close() +`) } test( 'code pane open at start-handles', { tag: ['@skipWin'] }, - async ({ page, homePage, scene }) => { + async ({ page, homePage, scene, cmdBar }) => { // Load the app with the code panes await page.addInitScript(async () => { localStorage.setItem( @@ -338,14 +430,20 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002) }) ) }) - await doEditSegmentsByDraggingHandle(page, homePage, ['code'], scene) + await doEditSegmentsByDraggingHandle( + page, + homePage, + ['code'], + scene, + cmdBar + ) } ) test( 'code pane closed at start-handles', { tag: ['@skipWin'] }, - async ({ page, homePage, scene }) => { + async ({ page, homePage, scene, cmdBar }) => { // Load the app with the code panes await page.addInitScript(async (persistModelingContext) => { localStorage.setItem( @@ -353,7 +451,7 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002) JSON.stringify({ openPanes: [] }) ) }, PERSIST_MODELING_CONTEXT) - await doEditSegmentsByDraggingHandle(page, homePage, [], scene) + await doEditSegmentsByDraggingHandle(page, homePage, [], scene, cmdBar) } ) }) @@ -362,6 +460,8 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002) page, editor, homePage, + scene, + cmdBar, }) => { const u = await getUtils(page) await page.addInitScript(async () => { @@ -373,6 +473,8 @@ sketch001 = startProfileAt([12.34, -12.34], sketch002) }) await homePage.goToModelingScene() + await scene.connectionEstablished() + await scene.settled(cmdBar) await expect( page.getByRole('button', { name: 'Start Sketch' }) @@ -1355,7 +1457,7 @@ test.describe('multi-profile sketching', () => { test( `test it removes half-finished expressions when changing tools in sketch mode`, { tag: ['@skipWin'] }, - async ({ context, page, scene, toolbar, editor, homePage }) => { + async ({ context, page, scene, toolbar, editor, homePage, cmdBar }) => { // We seed the scene with a single offset plane await context.addInitScript(() => { localStorage.setItem( @@ -1375,7 +1477,10 @@ profile002 = startProfileAt([117.2, 56.08], sketch001) ) }) + const [continueProfile2Clk] = scene.makeMouseHelpers(954, 282) + await homePage.goToModelingScene() + await scene.settled(cmdBar) await expect( page.getByRole('button', { name: 'Start Sketch' }) ).not.toBeDisabled() @@ -1386,7 +1491,13 @@ profile002 = startProfileAt([117.2, 56.08], sketch001) const [circlePoint1] = scene.makeMouseHelpers(700, 200) await test.step('equip circle tool and click first point', async () => { - await toolbar.circleBtn.click() + // await page.waitForTimeout(100) + await expect + .poll(async () => { + await toolbar.circleBtn.click() + return toolbar.circleBtn.getAttribute('aria-pressed') + }) + .toBe('true') await page.waitForTimeout(100) await circlePoint1() await editor.expectEditor.toContain( @@ -1401,6 +1512,7 @@ profile002 = startProfileAt([117.2, 56.08], sketch001) const [circle3Point1] = scene.makeMouseHelpers(650, 200) const [circle3Point2] = scene.makeMouseHelpers(750, 200) + // const [circle3Point3] = scene.makeMouseHelpers(700, 150) await test.step('equip three point circle tool and click first two points', async () => { await toolbar.selectCircleThreePoint() @@ -1411,25 +1523,40 @@ profile002 = startProfileAt([117.2, 56.08], sketch001) await editor.expectEditor.toContain('profile003 = circleThreePoint(') }) - await test.step('equip line tool and verify three point circle code is removed', async () => { + await test.step('equip line tool and verify three-point circle code is removed', async () => { await toolbar.lineBtn.click() await editor.expectEditor.not.toContain( 'profile003 = circleThreePoint(' ) }) + await test.step('equip three-point-arc tool and click first two points', async () => { + await page.waitForTimeout(200) + await toolbar.selectThreePointArc() + await page.waitForTimeout(200) + await circle3Point1() + await page.waitForTimeout(200) + await circle3Point2() + await editor.expectEditor.toContain('arcTo({') + }) + + await test.step('equip line tool and verify three-point-arc code is removed after second click', async () => { + await toolbar.lineBtn.click() + await editor.expectEditor.not.toContain('arcTo({') + }) + const [cornerRectPoint1] = scene.makeMouseHelpers(600, 300) await test.step('equip corner rectangle tool and click first point', async () => { await toolbar.rectangleBtn.click() await page.waitForTimeout(100) await cornerRectPoint1() - await editor.expectEditor.toContain('profile003 = startProfileAt(') + await editor.expectEditor.toContain('profile004 = startProfileAt(') }) await test.step('equip line tool and verify corner rectangle code is removed', async () => { await toolbar.lineBtn.click() - await editor.expectEditor.not.toContain('profile003 = startProfileAt(') + await editor.expectEditor.not.toContain('profile004 = startProfileAt(') }) const [centerRectPoint1] = scene.makeMouseHelpers(700, 300) @@ -1438,12 +1565,24 @@ profile002 = startProfileAt([117.2, 56.08], sketch001) await toolbar.selectCenterRectangle() await page.waitForTimeout(100) await centerRectPoint1() - await editor.expectEditor.toContain('profile003 = startProfileAt(') + await editor.expectEditor.toContain('profile004 = startProfileAt(') }) await test.step('equip line tool and verify center rectangle code is removed', async () => { await toolbar.lineBtn.click() - await editor.expectEditor.not.toContain('profile003 = startProfileAt(') + await editor.expectEditor.not.toContain('profile004 = startProfileAt(') + }) + + await test.step('continue profile002 with the three point arc tool, and then switch back to the line tool to verify it only removes the last expression in the pipe', async () => { + await toolbar.selectThreePointArc() + await page.waitForTimeout(200) + await continueProfile2Clk() + await page.waitForTimeout(200) + await circle3Point1() + await editor.expectEditor.toContain('arcTo({') + await toolbar.lineBtn.click() + await editor.expectEditor.not.toContain('arcTo({') + await editor.expectEditor.toContain('profile002') }) } ) @@ -1532,6 +1671,7 @@ profile003 = startProfileAt([206.63, -56.73], sketch001) }) => { await page.setBodyDimensions({ width: 1000, height: 500 }) await homePage.goToModelingScene() + await scene.connectionEstablished() await expect( page.getByRole('button', { name: 'Start Sketch' }) ).not.toBeDisabled() @@ -1595,7 +1735,7 @@ profile003 = startProfileAt([206.63, -56.73], sketch001) // timeout wait for engine animation is unavoidable await page.waitForTimeout(600) await editor.expectEditor.toContain(`sketch001 = startSketchOn('XZ')`) - await test.step('Create a close profile stopping mid profile to equip the tangential arc, and than back to the line tool', async () => { + await test.step('Create a close profile stopping mid profile to equip the tangential arc, then three-point arc, and then back to the line tool', async () => { await startProfile1() await editor.expectEditor.toContain( `profile001 = startProfileAt([4.61, 12.21], sketch001)` @@ -1613,12 +1753,45 @@ profile003 = startProfileAt([206.63, -56.73], sketch001) await editor.expectEditor.toContain( `|> tangentialArcTo([16.61, 4.14], %)` ) + + // Add a three-point arc segment + await toolbar.selectThreePointArc() + await page.waitForTimeout(300) + + // select end of profile again + await endLineStartTanArc() + await page.waitForTimeout(300) + + // Define points for the three-point arc + const [threePointInterior, threePointInteriorMove] = + scene.makeMouseHelpers(600, 200) + const [threePointEnd, threePointEndMove] = scene.makeMouseHelpers( + 590, + 270 + ) + + // Create the three-point arc + await page.waitForTimeout(300) + await threePointInteriorMove() + await threePointInterior() + await page.waitForTimeout(300) + await threePointEndMove() + await threePointEnd() + await page.waitForTimeout(300) + + // Verify the three-point arc was created correctly + await editor.expectEditor.toContain(`|> arcTo(`) + + // Switch back to line tool to continue await toolbar.lineBtn.click() await page.waitForTimeout(300) - await endArcStartLine() + + // Continue with the original line segment + await threePointEnd() + await page.waitForTimeout(300) await page.mouse.click(572, 110) - await editor.expectEditor.toContain(`|> line(end = [-11.73, 5.35])`) + await editor.expectEditor.toContain(`|> line(end = [-1.22, 10.85])`) await startProfile1() await editor.expectEditor.toContain( `|> line(endAbsolute = [profileStartX(%), profileStartY(%)]) @@ -1820,8 +1993,68 @@ profile003 = startProfileAt([206.63, -56.73], sketch001) ) }) - await test.step('double check that circle three point can be unequiped', async () => { - // this was tested implicitly for other tools, but not for circle three point since it's last + await test.step('create three-point arcs in a row without an unequip', async () => { + // Define points for the first three-point arc + const [arc1Point1, arc1Point1Move] = scene.makeMouseHelpers(700, 397) + const [arc1Point2, arc1Point2Move] = scene.makeMouseHelpers(724, 346) + const [arc1Point3, arc1Point3Move] = scene.makeMouseHelpers(785, 415) + + // Define points for the second three-point arc + const [arc2Point1, arc2Point1Move] = scene.makeMouseHelpers(792, 225) + const [arc2Point2, arc2Point2Move] = scene.makeMouseHelpers(820, 207) + const [arc2Point3, arc2Point3Move] = scene.makeMouseHelpers(905, 229) + + // Select the three-point arc tool + await toolbar.selectThreePointArc() + + // Create the first three-point arc + await arc1Point1Move() + await arc1Point1() + await page.waitForTimeout(300) + await arc1Point2Move() + await arc1Point2() + await page.waitForTimeout(300) + await arc1Point3Move() + await arc1Point3() + await page.waitForTimeout(300) + + // Verify the first three-point arc was created correctly + await editor.expectEditor.toContain( + `profile011 = startProfileAt([13.56, -9.97], sketch001) + |> arcTo({ + interior = [15.19, -6.51], + end = [19.33, -11.19] + }, %)`, + { shouldNormalise: true } + ) + + // Create the second three-point arc + await arc2Point1Move() + await arc2Point1() + await page.waitForTimeout(300) + await arc2Point2Move() + await arc2Point2() + await page.waitForTimeout(300) + await arc2Point3Move() + await arc2Point3() + await page.waitForTimeout(300) + + // Verify the second three-point arc was created correctly + await editor.expectEditor.toContain( + ` |> arcTo({ + interior = [19.8, 1.7], + end = [21.7, 2.92] + }, %) + |> arcTo({ + interior = [27.47, 1.42], + end = [27.57, 1.52] + }, %)`, + { shouldNormalise: true } + ) + }) + + await test.step('double check that three-point arc can be unequipped', async () => { + // this was tested implicitly for other tools, but not for three-point arc since it's last await page.waitForTimeout(300) await expect .poll(async () => { @@ -2085,7 +2318,7 @@ profile003 = circle(sketch001, center = [6.92, -4.2], radius = 3.16) test( 'can enter sketch when there is an extrude', { tag: ['@skipWin'] }, - async ({ homePage, scene, toolbar, page }) => { + async ({ homePage, scene, toolbar, page, cmdBar }) => { await page.addInitScript(async () => { localStorage.setItem( 'persistCode', @@ -2122,6 +2355,8 @@ extrude001 = extrude(profile003, length = 5) await page.setBodyDimensions({ width: 1000, height: 500 }) await homePage.goToModelingScene() + await scene.connectionEstablished() + await scene.settled(cmdBar) await expect( page.getByRole('button', { name: 'Start Sketch' }) ).not.toBeDisabled() @@ -2134,9 +2369,11 @@ extrude001 = extrude(profile003, length = 5) await page.waitForTimeout(600) await test.step('check the sketch is still drawn properly', async () => { - await scene.expectPixelColor([255, 255, 255], { x: 596, y: 165 }, 15) - await scene.expectPixelColor([255, 255, 255], { x: 641, y: 220 }, 15) - await scene.expectPixelColor([255, 255, 255], { x: 763, y: 214 }, 15) + await Promise.all([ + scene.expectPixelColor(TEST_COLORS.WHITE, { x: 596, y: 165 }, 15), + scene.expectPixelColor(TEST_COLORS.WHITE, { x: 641, y: 220 }, 15), + scene.expectPixelColor(TEST_COLORS.WHITE, { x: 763, y: 214 }, 15), + ]) }) } ) @@ -2293,7 +2530,7 @@ extrude001 = extrude(thePart, length = 75) test( 'Can enter sketch on sketch of wall and cap for segment, solid2d, extrude-wall, extrude-cap selections', { tag: ['@skipWin'] }, - async ({ homePage, scene, toolbar, editor, page }) => { + async ({ homePage, scene, toolbar, editor, page, cmdBar }) => { // TODO this test should include a test for selecting revolve walls and caps await page.addInitScript(async () => { @@ -2378,6 +2615,8 @@ extrude003 = extrude(profile011, length = 2.5) await page.setBodyDimensions({ width: 1000, height: 500 }) await homePage.goToModelingScene() + await scene.connectionEstablished() + await scene.settled(cmdBar) await expect( page.getByRole('button', { name: 'Start Sketch' }) ).not.toBeDisabled() @@ -2440,39 +2679,22 @@ extrude003 = extrude(profile011, length = 2.5) const verifyWallProfilesAreDrawn = async () => test.step('verify wall profiles are drawn', async () => { - // open polygon - await scene.expectPixelColor( - TEST_COLORS.WHITE, - { x: 599, y: 168 }, - 15 - ) - // closed polygon - await scene.expectPixelColor( - TEST_COLORS.WHITE, - { x: 656, y: 171 }, - 15 - ) - // revolved profile - await scene.expectPixelColor( - TEST_COLORS.WHITE, - { x: 655, y: 264 }, - 15 - ) - // extruded profile - await scene.expectPixelColor( - TEST_COLORS.WHITE, - { x: 808, y: 396 }, - 15 - ) - // circle - await scene.expectPixelColor( - [ - TEST_COLORS.WHITE, - TEST_COLORS.BLUE, // When entering via the circle, it's selected and therefore blue - ], - { x: 742, y: 386 }, - 15 - ) + await Promise.all([ + // open polygon + scene.expectPixelColor(TEST_COLORS.WHITE, { x: 599, y: 168 }, 15), + // closed polygon + scene.expectPixelColor(TEST_COLORS.WHITE, { x: 656, y: 171 }, 15), + // revolved profile + scene.expectPixelColor(TEST_COLORS.WHITE, { x: 655, y: 264 }, 15), + // extruded profile + scene.expectPixelColor(TEST_COLORS.WHITE, { x: 808, y: 396 }, 15), + // circle (When entering via the circle, it's selected and therefore blue) + scene.expectPixelColor( + [TEST_COLORS.WHITE, TEST_COLORS.BLUE], + { x: 742, y: 386 }, + 15 + ), + ]) }) const verifyCapProfilesAreDrawn = async () => diff --git a/e2e/playwright/snapshot-tests.spec.ts b/e2e/playwright/snapshot-tests.spec.ts index 528a86b0f..8b7b5b3a9 100644 --- a/e2e/playwright/snapshot-tests.spec.ts +++ b/e2e/playwright/snapshot-tests.spec.ts @@ -410,9 +410,9 @@ test.describe( test( 'Draft segments should look right', { tag: '@snapshot' }, - async ({ page, context, scene, cmdBar }) => { + async ({ page, scene, toolbar }) => { // FIXME: Skip on macos its being weird. - test.skip(process.platform === 'darwin', 'Skip on macos') + // test.skip(process.platform === 'darwin', 'Skip on macos') const u = await getUtils(page) await page.setViewportSize({ width: 1200, height: 500 }) @@ -421,6 +421,23 @@ test( await scene.connectionEstablished() + const startXPx = 600 + const [endOfTangentClk, endOfTangentMv] = scene.makeMouseHelpers( + startXPx + PUR * 30, + 500 - PUR * 20, + { steps: 10 } + ) + const [threePointArcMidPointClk, threePointArcMidPointMv] = + scene.makeMouseHelpers(800, 250, { steps: 10 }) + const [threePointArcEndPointClk, threePointArcEndPointMv] = + scene.makeMouseHelpers(750, 285, { steps: 10 }) + const [arcCenterClk, arcCenterMv] = scene.makeMouseHelpers(750, 210, { + steps: 10, + }) + const [arcEndClk, arcEndMv] = scene.makeMouseHelpers(750, 150, { + steps: 10, + }) + // click on "Start Sketch" button await u.doAndWaitForImageDiff( () => page.getByRole('button', { name: 'Start Sketch' }).click(), @@ -435,7 +452,6 @@ test( await page.waitForTimeout(700) // TODO detect animation ending, or disable animation - const startXPx = 600 await page.mouse.click(startXPx + PUR * 10, 500 - PUR * 10) code += `profile001 = startProfileAt([7.19, -9.7], sketch001)` await expect(page.locator('.cm-content')).toHaveText(code) @@ -471,12 +487,52 @@ test( await page.mouse.move(813, 392, { steps: 10 }) await page.waitForTimeout(500) - await page.mouse.move(startXPx + PUR * 30, 500 - PUR * 20, { steps: 10 }) + await endOfTangentMv() await expect(page).toHaveScreenshot({ maxDiffPixels: 100, mask: [page.getByTestId('model-state-indicator')], }) + await endOfTangentClk() + + await toolbar.selectThreePointArc() + await page.waitForTimeout(500) + await endOfTangentClk() + await threePointArcMidPointMv() + await expect(page).toHaveScreenshot({ + maxDiffPixels: 100, + mask: [page.getByTestId('model-state-indicator')], + }) + await threePointArcMidPointClk() + await page.waitForTimeout(100) + + await threePointArcEndPointMv() + await page.waitForTimeout(500) + await expect(page).toHaveScreenshot({ + maxDiffPixels: 100, + mask: [page.getByTestId('model-state-indicator')], + }) + + await threePointArcEndPointClk() + await page.waitForTimeout(100) + + await toolbar.selectArc() + await page.waitForTimeout(100) + + // continue the profile + await threePointArcEndPointClk() + await page.waitForTimeout(100) + await arcCenterMv() + await page.waitForTimeout(500) + await arcCenterClk() + + await arcEndMv() + await page.waitForTimeout(500) + await expect(page).toHaveScreenshot({ + maxDiffPixels: 100, + mask: [page.getByTestId('model-state-indicator')], + }) + await arcEndClk() } ) diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Client-side-scene-scale-should-match-engine-scale-Millimeter-scale-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Client-side-scene-scale-should-match-engine-scale-Millimeter-scale-1-Google-Chrome-linux.png index fdc809dbe37c878d90aa1f1453f401af0e047944..8753970fa0cacc07800fa35004f219c201705195 100644 GIT binary patch delta 18023 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 My_FLy5jF7pf3xC{%K!iX delta 17973 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 eflvSUyi4SCqO;Zn!XzV diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Draft-rectangles-should-look-right-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Draft-rectangles-should-look-right-1-Google-Chrome-linux.png index 810672369b6a4dddafeaf1e7cbd519933276bd27..d68cec135c6c7cb03624bed4292de0415b8b90da 100644 GIT binary patch literal 45976 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%0DDTz0v@?Y4Pgv96Ik;rl4;h>D3#5x3*?f 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 OJFTdCB9nOe_WuCo37fb8 literal 45899 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 diff --git a/e2e/playwright/snapshot-tests.spec.ts-snapshots/Draft-segments-should-look-right-1-Google-Chrome-linux.png b/e2e/playwright/snapshot-tests.spec.ts-snapshots/Draft-segments-should-look-right-1-Google-Chrome-linux.png index 78507dbc6eaeac0c389353ac52e9e376ad2a1b87..68728849409b9776955b3a737cb747c9d4d378e4 100644 GIT binary patch literal 43268 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 UERO>ZGXLu-4c+58r1Sp&3$swNHvj+t literal 43148 zcmbTe1yogS^gf7+ctKDUL?i_f>F(4^Nq0zhBhpB!l(dwzgmg+bN=tVsA=2Glv+?`Q ztog4sv;J%5EWXd{^};!4zx&<$+0XMF{N-fCurLTPP*6~?#9s<4prD|BLqWN=hqw;! zq!tT_z#rG_6vU7y1wBN|C@7Cn#D!ldIVY@5I;km+o}z5oZFYa4utd0GU|`VP$