transform a sketch (#5867)
* transform a sketch Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * fix test Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * A snapshot a day keeps the bugs away! 📷🐛 * A snapshot a day keeps the bugs away! 📷🐛 * A snapshot a day keeps the bugs away! 📷🐛 * A snapshot a day keeps the bugs away! 📷🐛 * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * A snapshot a day keeps the bugs away! 📷🐛 * A snapshot a day keeps the bugs away! 📷🐛 * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> --------- Signed-off-by: Jess Frazelle <github@jessfraz.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
title: "scale"
|
title: "scale"
|
||||||
excerpt: "Scale a solid."
|
excerpt: "Scale a solid or a sketch."
|
||||||
layout: manual
|
layout: manual
|
||||||
---
|
---
|
||||||
|
|
||||||
Scale a solid.
|
Scale a solid or a sketch.
|
||||||
|
|
||||||
By default the transform is applied in local sketch axis, therefore the origin will not move.
|
By default the transform is applied in local sketch axis, therefore the origin will not move.
|
||||||
|
|
||||||
@ -12,10 +12,10 @@ If you want to apply the transform in global space, set `global` to `true`. The
|
|||||||
|
|
||||||
```js
|
```js
|
||||||
scale(
|
scale(
|
||||||
solids: SolidOrImportedGeometry,
|
objects: SolidOrSketchOrImportedGeometry,
|
||||||
scale: [number],
|
scale: [number],
|
||||||
global?: bool,
|
global?: bool,
|
||||||
): SolidOrImportedGeometry
|
): SolidOrSketchOrImportedGeometry
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@ -23,13 +23,13 @@ scale(
|
|||||||
|
|
||||||
| Name | Type | Description | Required |
|
| Name | Type | Description | Required |
|
||||||
|----------|------|-------------|----------|
|
|----------|------|-------------|----------|
|
||||||
| `solids` | [`SolidOrImportedGeometry`](/docs/kcl/types/SolidOrImportedGeometry) | The solid or set of solids to scale. | Yes |
|
| `objects` | [`SolidOrSketchOrImportedGeometry`](/docs/kcl/types/SolidOrSketchOrImportedGeometry) | The solid, sketch, or set of solids or sketches to scale. | Yes |
|
||||||
| `scale` | [`[number]`](/docs/kcl/types/number) | The scale factor for the x, y, and z axes. | Yes |
|
| `scale` | [`[number]`](/docs/kcl/types/number) | The scale factor for the x, y, and z axes. | Yes |
|
||||||
| `global` | [`bool`](/docs/kcl/types/bool) | If true, the transform is applied in global space. The origin of the model will move. By default, the transform is applied in local sketch axis, therefore the origin will not move. | No |
|
| `global` | [`bool`](/docs/kcl/types/bool) | If true, the transform is applied in global space. The origin of the model will move. By default, the transform is applied in local sketch axis, therefore the origin will not move. | No |
|
||||||
|
|
||||||
### Returns
|
### Returns
|
||||||
|
|
||||||
[`SolidOrImportedGeometry`](/docs/kcl/types/SolidOrImportedGeometry) - Data for a solid or an imported geometry.
|
[`SolidOrSketchOrImportedGeometry`](/docs/kcl/types/SolidOrSketchOrImportedGeometry) - Data for a solid or an imported geometry.
|
||||||
|
|
||||||
|
|
||||||
### Examples
|
### Examples
|
||||||
|
@ -240509,17 +240509,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "rotate",
|
"name": "rotate",
|
||||||
"summary": "Rotate a solid.",
|
"summary": "Rotate a solid or a sketch.",
|
||||||
"description": "### Using Roll, Pitch, and Yaw\n\nWhen rotating a part in 3D space, \"roll,\" \"pitch,\" and \"yaw\" refer to the three rotational axes used to describe its orientation: roll is rotation around the longitudinal axis (front-to-back), pitch is rotation around the lateral axis (wing-to-wing), and yaw is rotation around the vertical axis (up-down); essentially, it's like tilting the part on its side (roll), tipping the nose up or down (pitch), and turning it left or right (yaw).\n\nSo, in the context of a 3D model:\n\n- **Roll**: Imagine spinning a pencil on its tip - that's a roll movement.\n\n- **Pitch**: Think of a seesaw motion, where the object tilts up or down along its side axis.\n\n- **Yaw**: Like turning your head left or right, this is a rotation around the vertical axis\n\n### Using an Axis and Angle\n\nWhen rotating a part around an axis, you specify the axis of rotation and the angle of rotation.",
|
"description": "### Using Roll, Pitch, and Yaw\n\nWhen rotating a part in 3D space, \"roll,\" \"pitch,\" and \"yaw\" refer to the three rotational axes used to describe its orientation: roll is rotation around the longitudinal axis (front-to-back), pitch is rotation around the lateral axis (wing-to-wing), and yaw is rotation around the vertical axis (up-down); essentially, it's like tilting the part on its side (roll), tipping the nose up or down (pitch), and turning it left or right (yaw).\n\nSo, in the context of a 3D model:\n\n- **Roll**: Imagine spinning a pencil on its tip - that's a roll movement.\n\n- **Pitch**: Think of a seesaw motion, where the object tilts up or down along its side axis.\n\n- **Yaw**: Like turning your head left or right, this is a rotation around the vertical axis\n\n### Using an Axis and Angle\n\nWhen rotating a part around an axis, you specify the axis of rotation and the angle of rotation.",
|
||||||
"tags": [],
|
"tags": [],
|
||||||
"keywordArguments": true,
|
"keywordArguments": true,
|
||||||
"args": [
|
"args": [
|
||||||
{
|
{
|
||||||
"name": "solids",
|
"name": "objects",
|
||||||
"type": "SolidOrImportedGeometry",
|
"type": "SolidOrSketchOrImportedGeometry",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
||||||
"title": "SolidOrImportedGeometry",
|
"title": "SolidOrSketchOrImportedGeometry",
|
||||||
"description": "Data for a solid or an imported geometry.",
|
"description": "Data for a solid or an imported geometry.",
|
||||||
"oneOf": [
|
"oneOf": [
|
||||||
{
|
{
|
||||||
@ -240570,6 +240570,26 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": [
|
||||||
|
"object",
|
||||||
|
"array"
|
||||||
|
],
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/components/schemas/Sketch"
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"sketchSet"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"definitions": {
|
"definitions": {
|
||||||
@ -242158,7 +242178,7 @@
|
|||||||
},
|
},
|
||||||
"required": true,
|
"required": true,
|
||||||
"includeInSnippet": true,
|
"includeInSnippet": true,
|
||||||
"description": "The solid or set of solids to rotate.",
|
"description": "The solid, sketch, or set of solids or sketches to rotate.",
|
||||||
"labelRequired": false
|
"labelRequired": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -251753,10 +251773,10 @@
|
|||||||
],
|
],
|
||||||
"returnValue": {
|
"returnValue": {
|
||||||
"name": "",
|
"name": "",
|
||||||
"type": "SolidOrImportedGeometry",
|
"type": "SolidOrSketchOrImportedGeometry",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
||||||
"title": "SolidOrImportedGeometry",
|
"title": "SolidOrSketchOrImportedGeometry",
|
||||||
"description": "Data for a solid or an imported geometry.",
|
"description": "Data for a solid or an imported geometry.",
|
||||||
"oneOf": [
|
"oneOf": [
|
||||||
{
|
{
|
||||||
@ -251807,6 +251827,26 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": [
|
||||||
|
"object",
|
||||||
|
"array"
|
||||||
|
],
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/components/schemas/Sketch"
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"sketchSet"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"definitions": {
|
"definitions": {
|
||||||
@ -253403,7 +253443,8 @@
|
|||||||
"// Rotate a pipe with roll, pitch, and yaw.\n\n\n// Create a path for the sweep.\nsweepPath = startSketchOn('XZ')\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc({ offset = 90, radius = 5 }, %)\n |> line(end = [-3, 0])\n |> tangentialArc({ offset = -90, radius = 5 }, %)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn('XY')\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn('XY')\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> rotate(roll = 10, pitch = 10, yaw = 90)",
|
"// Rotate a pipe with roll, pitch, and yaw.\n\n\n// Create a path for the sweep.\nsweepPath = startSketchOn('XZ')\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc({ offset = 90, radius = 5 }, %)\n |> line(end = [-3, 0])\n |> tangentialArc({ offset = -90, radius = 5 }, %)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn('XY')\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn('XY')\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> rotate(roll = 10, pitch = 10, yaw = 90)",
|
||||||
"// Rotate a pipe about an axis with an angle.\n\n\n// Create a path for the sweep.\nsweepPath = startSketchOn('XZ')\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc({ offset = 90, radius = 5 }, %)\n |> line(end = [-3, 0])\n |> tangentialArc({ offset = -90, radius = 5 }, %)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn('XY')\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn('XY')\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> rotate(axis = [0, 0, 1.0], angle = 90)",
|
"// Rotate a pipe about an axis with an angle.\n\n\n// Create a path for the sweep.\nsweepPath = startSketchOn('XZ')\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc({ offset = 90, radius = 5 }, %)\n |> line(end = [-3, 0])\n |> tangentialArc({ offset = -90, radius = 5 }, %)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn('XY')\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn('XY')\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> rotate(axis = [0, 0, 1.0], angle = 90)",
|
||||||
"// Rotate an imported model.\n\n\nimport \"tests/inputs/cube.sldprt\" as cube\n\ncube\n |> rotate(axis = [0, 0, 1.0], angle = 90)",
|
"// Rotate an imported model.\n\n\nimport \"tests/inputs/cube.sldprt\" as cube\n\ncube\n |> rotate(axis = [0, 0, 1.0], angle = 90)",
|
||||||
"// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn('XY')\nrectangleSketch = startProfileAt([-200, 23.86], sketch001)\n |> angledLine([0, 73.47], %, $rectangleSegmentA001)\n |> angledLine([\n segAng(rectangleSegmentA001) - 90,\n 50.61\n ], %)\n |> angledLine([\n segAng(rectangleSegmentA001),\n -segLen(rectangleSegmentA001)\n ], %)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn('YZ')\nsweepPath = startProfileAt([0, 0], sketch002)\n |> yLine(length = 231.81)\n |> tangentialArc({ radius = 80, offset = -90 }, %)\n |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Rotate the sweeps.\nrotate(parts, axis = [0, 0, 1.0], angle = 90)"
|
"// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn('XY')\nrectangleSketch = startProfileAt([-200, 23.86], sketch001)\n |> angledLine([0, 73.47], %, $rectangleSegmentA001)\n |> angledLine([\n segAng(rectangleSegmentA001) - 90,\n 50.61\n ], %)\n |> angledLine([\n segAng(rectangleSegmentA001),\n -segLen(rectangleSegmentA001)\n ], %)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn('YZ')\nsweepPath = startProfileAt([0, 0], sketch002)\n |> yLine(length = 231.81)\n |> tangentialArc({ radius = 80, offset = -90 }, %)\n |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Rotate the sweeps.\nrotate(parts, axis = [0, 0, 1.0], angle = 90)",
|
||||||
|
"// Translate and rotate a sketch to create a loft.\nsketch001 = startSketchOn('XY')\n\nfn square() {\n return startProfileAt([-10, 10], sketch001)\n |> xLine(length = 20)\n |> yLine(length = -20)\n |> xLine(length = -20)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n}\n\nprofile001 = square()\n\nprofile002 = square()\n |> translate(translate = [0, 0, 20])\n |> rotate(axis = [0, 0, 1.0], angle = 45)\n\nloft([profile001, profile002])"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -253450,17 +253491,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "scale",
|
"name": "scale",
|
||||||
"summary": "Scale a solid.",
|
"summary": "Scale a solid or a sketch.",
|
||||||
"description": "By default the transform is applied in local sketch axis, therefore the origin will not move.\n\nIf you want to apply the transform in global space, set `global` to `true`. The origin of the model will move. If the model is not centered on origin and you scale globally it will look like the model moves and gets bigger at the same time. Say you have a square `(1,1) - (1,2) - (2,2) - (2,1)` and you scale by 2 globally it will become `(2,2) - (2,4)`...etc so the origin has moved from `(1.5, 1.5)` to `(2,2)`.",
|
"description": "By default the transform is applied in local sketch axis, therefore the origin will not move.\n\nIf you want to apply the transform in global space, set `global` to `true`. The origin of the model will move. If the model is not centered on origin and you scale globally it will look like the model moves and gets bigger at the same time. Say you have a square `(1,1) - (1,2) - (2,2) - (2,1)` and you scale by 2 globally it will become `(2,2) - (2,4)`...etc so the origin has moved from `(1.5, 1.5)` to `(2,2)`.",
|
||||||
"tags": [],
|
"tags": [],
|
||||||
"keywordArguments": true,
|
"keywordArguments": true,
|
||||||
"args": [
|
"args": [
|
||||||
{
|
{
|
||||||
"name": "solids",
|
"name": "objects",
|
||||||
"type": "SolidOrImportedGeometry",
|
"type": "SolidOrSketchOrImportedGeometry",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
||||||
"title": "SolidOrImportedGeometry",
|
"title": "SolidOrSketchOrImportedGeometry",
|
||||||
"description": "Data for a solid or an imported geometry.",
|
"description": "Data for a solid or an imported geometry.",
|
||||||
"oneOf": [
|
"oneOf": [
|
||||||
{
|
{
|
||||||
@ -253511,6 +253552,26 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": [
|
||||||
|
"object",
|
||||||
|
"array"
|
||||||
|
],
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/components/schemas/Sketch"
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"sketchSet"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"definitions": {
|
"definitions": {
|
||||||
@ -255099,7 +255160,7 @@
|
|||||||
},
|
},
|
||||||
"required": true,
|
"required": true,
|
||||||
"includeInSnippet": true,
|
"includeInSnippet": true,
|
||||||
"description": "The solid or set of solids to scale.",
|
"description": "The solid, sketch, or set of solids or sketches to scale.",
|
||||||
"labelRequired": false
|
"labelRequired": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -258303,10 +258364,10 @@
|
|||||||
],
|
],
|
||||||
"returnValue": {
|
"returnValue": {
|
||||||
"name": "",
|
"name": "",
|
||||||
"type": "SolidOrImportedGeometry",
|
"type": "SolidOrSketchOrImportedGeometry",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
||||||
"title": "SolidOrImportedGeometry",
|
"title": "SolidOrSketchOrImportedGeometry",
|
||||||
"description": "Data for a solid or an imported geometry.",
|
"description": "Data for a solid or an imported geometry.",
|
||||||
"oneOf": [
|
"oneOf": [
|
||||||
{
|
{
|
||||||
@ -258357,6 +258418,26 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": [
|
||||||
|
"object",
|
||||||
|
"array"
|
||||||
|
],
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/components/schemas/Sketch"
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"sketchSet"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"definitions": {
|
"definitions": {
|
||||||
@ -300357,17 +300438,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "translate",
|
"name": "translate",
|
||||||
"summary": "Move a solid.",
|
"summary": "Move a solid or a sketch.",
|
||||||
"description": "",
|
"description": "",
|
||||||
"tags": [],
|
"tags": [],
|
||||||
"keywordArguments": true,
|
"keywordArguments": true,
|
||||||
"args": [
|
"args": [
|
||||||
{
|
{
|
||||||
"name": "solids",
|
"name": "objects",
|
||||||
"type": "SolidOrImportedGeometry",
|
"type": "SolidOrSketchOrImportedGeometry",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
||||||
"title": "SolidOrImportedGeometry",
|
"title": "SolidOrSketchOrImportedGeometry",
|
||||||
"description": "Data for a solid or an imported geometry.",
|
"description": "Data for a solid or an imported geometry.",
|
||||||
"oneOf": [
|
"oneOf": [
|
||||||
{
|
{
|
||||||
@ -300418,6 +300499,26 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": [
|
||||||
|
"object",
|
||||||
|
"array"
|
||||||
|
],
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/components/schemas/Sketch"
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"sketchSet"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"definitions": {
|
"definitions": {
|
||||||
@ -302006,7 +302107,7 @@
|
|||||||
},
|
},
|
||||||
"required": true,
|
"required": true,
|
||||||
"includeInSnippet": true,
|
"includeInSnippet": true,
|
||||||
"description": "The solid or set of solids to move.",
|
"description": "The solid, sketch, or set of solids or sketches to move.",
|
||||||
"labelRequired": false
|
"labelRequired": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -303608,7 +303709,7 @@
|
|||||||
},
|
},
|
||||||
"required": true,
|
"required": true,
|
||||||
"includeInSnippet": true,
|
"includeInSnippet": true,
|
||||||
"description": "The amount to move the solid in all three axes.",
|
"description": "The amount to move the solid or sketch in all three axes.",
|
||||||
"labelRequired": true
|
"labelRequired": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -305210,10 +305311,10 @@
|
|||||||
],
|
],
|
||||||
"returnValue": {
|
"returnValue": {
|
||||||
"name": "",
|
"name": "",
|
||||||
"type": "SolidOrImportedGeometry",
|
"type": "SolidOrSketchOrImportedGeometry",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
"$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema",
|
||||||
"title": "SolidOrImportedGeometry",
|
"title": "SolidOrSketchOrImportedGeometry",
|
||||||
"description": "Data for a solid or an imported geometry.",
|
"description": "Data for a solid or an imported geometry.",
|
||||||
"oneOf": [
|
"oneOf": [
|
||||||
{
|
{
|
||||||
@ -305264,6 +305365,26 @@
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": [
|
||||||
|
"object",
|
||||||
|
"array"
|
||||||
|
],
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/components/schemas/Sketch"
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"sketchSet"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"definitions": {
|
"definitions": {
|
||||||
@ -306859,7 +306980,9 @@
|
|||||||
"examples": [
|
"examples": [
|
||||||
"// Move a pipe.\n\n\n// Create a path for the sweep.\nsweepPath = startSketchOn('XZ')\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc({ offset = 90, radius = 5 }, %)\n |> line(end = [-3, 0])\n |> tangentialArc({ offset = -90, radius = 5 }, %)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn('XY')\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn('XY')\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> translate(translate = [1.0, 1.0, 2.5])",
|
"// Move a pipe.\n\n\n// Create a path for the sweep.\nsweepPath = startSketchOn('XZ')\n |> startProfileAt([0.05, 0.05], %)\n |> line(end = [0, 7])\n |> tangentialArc({ offset = 90, radius = 5 }, %)\n |> line(end = [-3, 0])\n |> tangentialArc({ offset = -90, radius = 5 }, %)\n |> line(end = [0, 7])\n\n// Create a hole for the pipe.\npipeHole = startSketchOn('XY')\n |> circle(center = [0, 0], radius = 1.5)\n\nsweepSketch = startSketchOn('XY')\n |> circle(center = [0, 0], radius = 2)\n |> hole(pipeHole, %)\n |> sweep(path = sweepPath)\n |> translate(translate = [1.0, 1.0, 2.5])",
|
||||||
"// Move an imported model.\n\n\nimport \"tests/inputs/cube.sldprt\" as cube\n\ncube\n |> translate(translate = [1.0, 1.0, 2.5])",
|
"// Move an imported model.\n\n\nimport \"tests/inputs/cube.sldprt\" as cube\n\ncube\n |> translate(translate = [1.0, 1.0, 2.5])",
|
||||||
"// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn('XY')\nrectangleSketch = startProfileAt([-200, 23.86], sketch001)\n |> angledLine([0, 73.47], %, $rectangleSegmentA001)\n |> angledLine([\n segAng(rectangleSegmentA001) - 90,\n 50.61\n ], %)\n |> angledLine([\n segAng(rectangleSegmentA001),\n -segLen(rectangleSegmentA001)\n ], %)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn('YZ')\nsweepPath = startProfileAt([0, 0], sketch002)\n |> yLine(length = 231.81)\n |> tangentialArc({ radius = 80, offset = -90 }, %)\n |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Move the sweeps.\ntranslate(parts, translate = [1.0, 1.0, 2.5])"
|
"// Sweep two sketches along the same path.\n\n\nsketch001 = startSketchOn('XY')\nrectangleSketch = startProfileAt([-200, 23.86], sketch001)\n |> angledLine([0, 73.47], %, $rectangleSegmentA001)\n |> angledLine([\n segAng(rectangleSegmentA001) - 90,\n 50.61\n ], %)\n |> angledLine([\n segAng(rectangleSegmentA001),\n -segLen(rectangleSegmentA001)\n ], %)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n\ncircleSketch = circle(sketch001, center = [200, -30.29], radius = 32.63)\n\nsketch002 = startSketchOn('YZ')\nsweepPath = startProfileAt([0, 0], sketch002)\n |> yLine(length = 231.81)\n |> tangentialArc({ radius = 80, offset = -90 }, %)\n |> xLine(length = 384.93)\n\nparts = sweep([rectangleSketch, circleSketch], path = sweepPath)\n\n// Move the sweeps.\ntranslate(parts, translate = [1.0, 1.0, 2.5])",
|
||||||
|
"// Move a sketch.\n\n\nfn square(length) {\n l = length / 2\n p0 = [-l, -l]\n p1 = [-l, l]\n p2 = [l, l]\n p3 = [l, -l]\n\n return startSketchOn(XY)\n |> startProfileAt(p0, %)\n |> line(endAbsolute = p1)\n |> line(endAbsolute = p2)\n |> line(endAbsolute = p3)\n |> close()\n}\n\nsquare(10)\n |> translate(translate = [5, 5, 0])\n |> extrude(length = 10)",
|
||||||
|
"// Translate and rotate a sketch to create a loft.\nsketch001 = startSketchOn('XY')\n\nfn square() {\n return startProfileAt([-10, 10], sketch001)\n |> xLine(length = 20)\n |> yLine(length = -20)\n |> xLine(length = -20)\n |> line(endAbsolute = [profileStartX(%), profileStartY(%)])\n |> close()\n}\n\nprofile001 = square()\n\nprofile002 = square()\n |> translate(translate = [0, 0, 20])\n |> rotate(axis = [0, 0, 1.0], angle = 45)\n\nloft([profile001, profile002])"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
66
docs/kcl/types/SolidOrSketchOrImportedGeometry.md
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
---
|
||||||
|
title: "SolidOrSketchOrImportedGeometry"
|
||||||
|
excerpt: "Data for a solid or an imported geometry."
|
||||||
|
layout: manual
|
||||||
|
---
|
||||||
|
|
||||||
|
Data for a solid or an imported geometry.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**This schema accepts exactly one of the following:**
|
||||||
|
|
||||||
|
Data for an imported geometry.
|
||||||
|
|
||||||
|
**Type:** `object`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Type | Description | Required |
|
||||||
|
|----------|------|-------------|----------|
|
||||||
|
| `type` |enum: `importedGeometry`| | No |
|
||||||
|
| `id` |[`string`](/docs/kcl/types/string)| The ID of the imported geometry. | No |
|
||||||
|
| `value` |`[` [`string`](/docs/kcl/types/string) `]`| The original file paths. | No |
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
**Type:** `[object, array]`
|
||||||
|
|
||||||
|
`[` [`Solid`](/docs/kcl/types/Solid) `]`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Type | Description | Required |
|
||||||
|
|----------|------|-------------|----------|
|
||||||
|
| `type` |enum: `solidSet`| | No |
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
**Type:** `[object, array]`
|
||||||
|
|
||||||
|
`[` [`Sketch`](/docs/kcl/types/Sketch) `]`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Properties
|
||||||
|
|
||||||
|
| Property | Type | Description | Required |
|
||||||
|
|----------|------|-------------|----------|
|
||||||
|
| `type` |enum: `sketchSet`| | No |
|
||||||
|
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
@ -3073,7 +3073,7 @@ DATA;
|
|||||||
#3057 = CARTESIAN_POINT('NONE', (0.051104890518972546, -0.039940414856583686, -0.0635));
|
#3057 = CARTESIAN_POINT('NONE', (0.051104890518972546, -0.039940414856583686, -0.0635));
|
||||||
#3058 = CARTESIAN_POINT('NONE', (0.052242074077479335, -0.038876903045998674, -0.0635));
|
#3058 = CARTESIAN_POINT('NONE', (0.052242074077479335, -0.038876903045998674, -0.0635));
|
||||||
#3059 = CARTESIAN_POINT('NONE', (0.05224392753122875, -0.03887516966712757, -0.0635));
|
#3059 = CARTESIAN_POINT('NONE', (0.05224392753122875, -0.03887516966712757, -0.0635));
|
||||||
#3060 = CARTESIAN_POINT('NONE', (0.05311532463588208, -0.03767579444673181, -0.0635));
|
#3060 = CARTESIAN_POINT('NONE', (0.05311532463588208, -0.03767579444673182, -0.0635));
|
||||||
#3061 = CARTESIAN_POINT('NONE', (0.05311674489404425, -0.03767383962907501, -0.0635));
|
#3061 = CARTESIAN_POINT('NONE', (0.05311674489404425, -0.03767383962907501, -0.0635));
|
||||||
#3062 = CARTESIAN_POINT('NONE', (0.053776795686355607, -0.03626367057234418, -0.0635));
|
#3062 = CARTESIAN_POINT('NONE', (0.053776795686355607, -0.03626367057234418, -0.0635));
|
||||||
#3063 = CARTESIAN_POINT('NONE', (0.05377787147891932, -0.036261372189549286, -0.0635));
|
#3063 = CARTESIAN_POINT('NONE', (0.05377787147891932, -0.036261372189549286, -0.0635));
|
||||||
@ -3087,7 +3087,7 @@ DATA;
|
|||||||
#3071 = CARTESIAN_POINT('NONE', (0.053252818350252196, -0.029748655756475863, -0.0635));
|
#3071 = CARTESIAN_POINT('NONE', (0.053252818350252196, -0.029748655756475863, -0.0635));
|
||||||
#3072 = CARTESIAN_POINT('NONE', (0.05233460363130192, -0.028414043632913145, -0.0635));
|
#3072 = CARTESIAN_POINT('NONE', (0.05233460363130192, -0.028414043632913145, -0.0635));
|
||||||
#3073 = CARTESIAN_POINT('NONE', (0.05233310706682834, -0.028411868397590818, -0.0635));
|
#3073 = CARTESIAN_POINT('NONE', (0.05233310706682834, -0.028411868397590818, -0.0635));
|
||||||
#3074 = CARTESIAN_POINT('NONE', (0.05123295226616701, -0.02734405921816657, -0.0635));
|
#3074 = CARTESIAN_POINT('NONE', (0.051232952266167, -0.02734405921816657, -0.0635));
|
||||||
#3075 = CARTESIAN_POINT('NONE', (0.05123115916423111, -0.027342318835171704, -0.0635));
|
#3075 = CARTESIAN_POINT('NONE', (0.05123115916423111, -0.027342318835171704, -0.0635));
|
||||||
#3076 = CARTESIAN_POINT('NONE', (0.0499865731843106, -0.02652506813979786, -0.0635));
|
#3076 = CARTESIAN_POINT('NONE', (0.0499865731843106, -0.02652506813979786, -0.0635));
|
||||||
#3077 = CARTESIAN_POINT('NONE', (0.049984544679296, -0.026523736132881105, -0.0635));
|
#3077 = CARTESIAN_POINT('NONE', (0.049984544679296, -0.026523736132881105, -0.0635));
|
||||||
@ -3105,7 +3105,7 @@ DATA;
|
|||||||
#3089 = CARTESIAN_POINT('NONE', (0.0407616757108459, -0.02775624333996861, -0.0635));
|
#3089 = CARTESIAN_POINT('NONE', (0.0407616757108459, -0.02775624333996861, -0.0635));
|
||||||
#3090 = CARTESIAN_POINT('NONE', (0.03976400232776854, -0.0288872140372878, -0.0635));
|
#3090 = CARTESIAN_POINT('NONE', (0.03976400232776854, -0.0288872140372878, -0.0635));
|
||||||
#3091 = CARTESIAN_POINT('NONE', (0.03976237625653429, -0.028889057364922765, -0.0635));
|
#3091 = CARTESIAN_POINT('NONE', (0.03976237625653429, -0.028889057364922765, -0.0635));
|
||||||
#3092 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#3029, #3030, #3031, #3032, #3033, #3034, #3035, #3036, #3037, #3038, #3039, #3040, #3041, #3042, #3043, #3044, #3045, #3046, #3047, #3048, #3049, #3050, #3051, #3052, #3053, #3054, #3055, #3056, #3057, #3058, #3059, #3060, #3061, #3062, #3063, #3064, #3065, #3066, #3067, #3068, #3069, #3070, #3071, #3072, #3073, #3074, #3075, #3076, #3077, #3078, #3079, #3080, #3081, #3082, #3083, #3084, #3085, #3086, #3087, #3088, #3089, #3090, #3091), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (-1, -0.9836065573770492, -0.9672131147540983, -0.9508196721311475, -0.9344262295081968, -0.9180327868852459, -0.9016393442622951, -0.8852459016393442, -0.8688524590163934, -0.8524590163934427, -0.8360655737704918, -0.819672131147541, -0.8032786885245902, -0.7868852459016393, -0.7704918032786885, -0.7540983606557377, -0.7377049180327868, -0.721311475409836, -0.7049180327868853, -0.6885245901639344, -0.6721311475409836, -0.6557377049180328, -0.639344262295082, -0.6229508196721312, -0.6065573770491803, -0.5901639344262295, -0.5737704918032787, -0.5573770491803278, -0.540983606557377, -0.5245901639344261, -0.5081967213114753, -0.49180327868852464, -0.4754098360655738, -0.45901639344262296, -0.4426229508196722, -0.42622950819672134, -0.4098360655737705, -0.39344262295081966, -0.3770491803278689, -0.36065573770491804, -0.3442622950819672, -0.3278688524590164, -0.3114754098360656, -0.29508196721311475, -0.27868852459016397, -0.26229508196721313, -0.24590163934426232, -0.22950819672131148, -0.21311475409836067, -0.19672131147540983, -0.18032786885245902, -0.1639344262295082, -0.14754098360655737, -0.13114754098360656, -0.11475409836065574, -0.09836065573770492, -0.0819672131147541, -0.06557377049180328, -0.04918032786885246, -0.03278688524590164, -0.01639344262295082, -0), .UNSPECIFIED.);
|
#3092 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#3029, #3030, #3031, #3032, #3033, #3034, #3035, #3036, #3037, #3038, #3039, #3040, #3041, #3042, #3043, #3044, #3045, #3046, #3047, #3048, #3049, #3050, #3051, #3052, #3053, #3054, #3055, #3056, #3057, #3058, #3059, #3060, #3061, #3062, #3063, #3064, #3065, #3066, #3067, #3068, #3069, #3070, #3071, #3072, #3073, #3074, #3075, #3076, #3077, #3078, #3079, #3080, #3081, #3082, #3083, #3084, #3085, #3086, #3087, #3088, #3089, #3090, #3091), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (0, 0.01639344262295082, 0.03278688524590164, 0.04918032786885246, 0.06557377049180328, 0.0819672131147541, 0.09836065573770492, 0.11475409836065574, 0.13114754098360656, 0.14754098360655737, 0.1639344262295082, 0.18032786885245902, 0.19672131147540983, 0.21311475409836067, 0.22950819672131148, 0.24590163934426232, 0.26229508196721313, 0.27868852459016397, 0.29508196721311475, 0.3114754098360656, 0.3278688524590164, 0.3442622950819672, 0.36065573770491804, 0.3770491803278689, 0.39344262295081966, 0.4098360655737705, 0.42622950819672134, 0.4426229508196722, 0.45901639344262296, 0.4754098360655738, 0.49180327868852464, 0.5081967213114753, 0.5245901639344261, 0.540983606557377, 0.5573770491803278, 0.5737704918032787, 0.5901639344262295, 0.6065573770491803, 0.6229508196721312, 0.639344262295082, 0.6557377049180328, 0.6721311475409836, 0.6885245901639344, 0.7049180327868853, 0.721311475409836, 0.7377049180327868, 0.7540983606557377, 0.7704918032786885, 0.7868852459016393, 0.8032786885245902, 0.819672131147541, 0.8360655737704918, 0.8524590163934427, 0.8688524590163934, 0.8852459016393442, 0.9016393442622951, 0.9180327868852459, 0.9344262295081968, 0.9508196721311475, 0.9672131147540983, 0.9836065573770492, 1), .UNSPECIFIED.);
|
||||||
#3093 = DIRECTION('NONE', (0, 0, 1));
|
#3093 = DIRECTION('NONE', (0, 0, 1));
|
||||||
#3094 = VECTOR('NONE', #3093, 1);
|
#3094 = VECTOR('NONE', #3093, 1);
|
||||||
#3095 = CARTESIAN_POINT('NONE', (0.03976237625653429, -0.028889057364922765, -0.063501));
|
#3095 = CARTESIAN_POINT('NONE', (0.03976237625653429, -0.028889057364922765, -0.063501));
|
||||||
|
@ -133,7 +133,7 @@ impl StdLibFnArg {
|
|||||||
|| self.type_ == "[Solid]"
|
|| self.type_ == "[Solid]"
|
||||||
|| self.type_ == "SketchSurface"
|
|| self.type_ == "SketchSurface"
|
||||||
|| self.type_ == "SketchOrSurface"
|
|| self.type_ == "SketchOrSurface"
|
||||||
|| self.type_ == "SolidOrImportedGeometry"
|
|| self.type_ == "SolidOrSketchOrImportedGeometry"
|
||||||
{
|
{
|
||||||
return Ok(Some((index, format!("{label}${{{}:{}}}", index, "%"))));
|
return Ok(Some((index, format!("{label}${{{}:{}}}", index, "%"))));
|
||||||
} else if (self.type_ == "TagDeclarator" || self.type_ == "TagNode") && self.required {
|
} else if (self.type_ == "TagDeclarator" || self.type_ == "TagNode") && self.required {
|
||||||
|
@ -83,16 +83,17 @@ pub struct ImportedGeometry {
|
|||||||
#[ts(export)]
|
#[ts(export)]
|
||||||
#[serde(tag = "type", rename_all = "camelCase")]
|
#[serde(tag = "type", rename_all = "camelCase")]
|
||||||
#[allow(clippy::vec_box)]
|
#[allow(clippy::vec_box)]
|
||||||
pub enum SolidOrImportedGeometry {
|
pub enum SolidOrSketchOrImportedGeometry {
|
||||||
ImportedGeometry(Box<ImportedGeometry>),
|
ImportedGeometry(Box<ImportedGeometry>),
|
||||||
SolidSet(Vec<Solid>),
|
SolidSet(Vec<Solid>),
|
||||||
|
SketchSet(Vec<Sketch>),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl From<SolidOrImportedGeometry> for crate::execution::KclValue {
|
impl From<SolidOrSketchOrImportedGeometry> for crate::execution::KclValue {
|
||||||
fn from(value: SolidOrImportedGeometry) -> Self {
|
fn from(value: SolidOrSketchOrImportedGeometry) -> Self {
|
||||||
match value {
|
match value {
|
||||||
SolidOrImportedGeometry::ImportedGeometry(s) => crate::execution::KclValue::ImportedGeometry(*s),
|
SolidOrSketchOrImportedGeometry::ImportedGeometry(s) => crate::execution::KclValue::ImportedGeometry(*s),
|
||||||
SolidOrImportedGeometry::SolidSet(mut s) => {
|
SolidOrSketchOrImportedGeometry::SolidSet(mut s) => {
|
||||||
if s.len() == 1 {
|
if s.len() == 1 {
|
||||||
crate::execution::KclValue::Solid {
|
crate::execution::KclValue::Solid {
|
||||||
value: Box::new(s.pop().unwrap()),
|
value: Box::new(s.pop().unwrap()),
|
||||||
@ -107,15 +108,31 @@ impl From<SolidOrImportedGeometry> for crate::execution::KclValue {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
SolidOrSketchOrImportedGeometry::SketchSet(mut s) => {
|
||||||
|
if s.len() == 1 {
|
||||||
|
crate::execution::KclValue::Sketch {
|
||||||
|
value: Box::new(s.pop().unwrap()),
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
crate::execution::KclValue::HomArray {
|
||||||
|
value: s
|
||||||
|
.into_iter()
|
||||||
|
.map(|s| crate::execution::KclValue::Sketch { value: Box::new(s) })
|
||||||
|
.collect(),
|
||||||
|
ty: crate::execution::PrimitiveType::Sketch,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl SolidOrImportedGeometry {
|
impl SolidOrSketchOrImportedGeometry {
|
||||||
pub(crate) fn ids(&self) -> Vec<uuid::Uuid> {
|
pub(crate) fn ids(&self) -> Vec<uuid::Uuid> {
|
||||||
match self {
|
match self {
|
||||||
SolidOrImportedGeometry::ImportedGeometry(s) => vec![s.id],
|
SolidOrSketchOrImportedGeometry::ImportedGeometry(s) => vec![s.id],
|
||||||
SolidOrImportedGeometry::SolidSet(s) => s.iter().map(|s| s.id).collect(),
|
SolidOrSketchOrImportedGeometry::SolidSet(s) => s.iter().map(|s| s.id).collect(),
|
||||||
|
SolidOrSketchOrImportedGeometry::SketchSet(s) => s.iter().map(|s| s.id).collect(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1459,13 +1459,27 @@ impl<'a> FromKclValue<'a> for crate::execution::Solid {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> FromKclValue<'a> for crate::execution::SolidOrImportedGeometry {
|
impl<'a> FromKclValue<'a> for crate::execution::SolidOrSketchOrImportedGeometry {
|
||||||
fn from_kcl_val(arg: &'a KclValue) -> Option<Self> {
|
fn from_kcl_val(arg: &'a KclValue) -> Option<Self> {
|
||||||
match arg {
|
match arg {
|
||||||
KclValue::Solid { value } => Some(Self::SolidSet(vec![(**value).clone()])),
|
KclValue::Solid { value } => Some(Self::SolidSet(vec![(**value).clone()])),
|
||||||
KclValue::HomArray { value, .. } => Some(Self::SolidSet(
|
KclValue::Sketch { value } => Some(Self::SketchSet(vec![(**value).clone()])),
|
||||||
value.iter().map(|v| v.as_solid().unwrap().clone()).collect(),
|
KclValue::HomArray { value, .. } => {
|
||||||
)),
|
let mut solids = vec![];
|
||||||
|
let mut sketches = vec![];
|
||||||
|
for item in value {
|
||||||
|
match item {
|
||||||
|
KclValue::Solid { value } => solids.push((**value).clone()),
|
||||||
|
KclValue::Sketch { value } => sketches.push((**value).clone()),
|
||||||
|
_ => return None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !solids.is_empty() {
|
||||||
|
Some(Self::SolidSet(solids))
|
||||||
|
} else {
|
||||||
|
Some(Self::SketchSet(sketches))
|
||||||
|
}
|
||||||
|
}
|
||||||
KclValue::ImportedGeometry(value) => Some(Self::ImportedGeometry(Box::new(value.clone()))),
|
KclValue::ImportedGeometry(value) => Some(Self::ImportedGeometry(Box::new(value.clone()))),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
|
@ -15,16 +15,17 @@ use crate::{
|
|||||||
errors::{KclError, KclErrorDetails},
|
errors::{KclError, KclErrorDetails},
|
||||||
execution::{
|
execution::{
|
||||||
kcl_value::{ArrayLen, RuntimeType},
|
kcl_value::{ArrayLen, RuntimeType},
|
||||||
ExecState, KclValue, PrimitiveType, SolidOrImportedGeometry,
|
ExecState, KclValue, PrimitiveType, SolidOrSketchOrImportedGeometry,
|
||||||
},
|
},
|
||||||
std::Args,
|
std::Args,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Scale a solid.
|
/// Scale a solid or a sketch.
|
||||||
pub async fn scale(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
pub async fn scale(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||||
let solids = args.get_unlabeled_kw_arg_typed(
|
let objects = args.get_unlabeled_kw_arg_typed(
|
||||||
"solids",
|
"objects",
|
||||||
&RuntimeType::Union(vec![
|
&RuntimeType::Union(vec![
|
||||||
|
RuntimeType::Array(PrimitiveType::Sketch, ArrayLen::NonEmpty),
|
||||||
RuntimeType::Array(PrimitiveType::Solid, ArrayLen::NonEmpty),
|
RuntimeType::Array(PrimitiveType::Solid, ArrayLen::NonEmpty),
|
||||||
RuntimeType::Primitive(PrimitiveType::ImportedGeometry),
|
RuntimeType::Primitive(PrimitiveType::ImportedGeometry),
|
||||||
]),
|
]),
|
||||||
@ -33,11 +34,11 @@ pub async fn scale(exec_state: &mut ExecState, args: Args) -> Result<KclValue, K
|
|||||||
let scale = args.get_kw_arg("scale")?;
|
let scale = args.get_kw_arg("scale")?;
|
||||||
let global = args.get_kw_arg_opt("global")?;
|
let global = args.get_kw_arg_opt("global")?;
|
||||||
|
|
||||||
let solids = inner_scale(solids, scale, global, exec_state, args).await?;
|
let objects = inner_scale(objects, scale, global, exec_state, args).await?;
|
||||||
Ok(solids.into())
|
Ok(objects.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Scale a solid.
|
/// Scale a solid or a sketch.
|
||||||
///
|
///
|
||||||
/// By default the transform is applied in local sketch axis, therefore the origin will not move.
|
/// By default the transform is applied in local sketch axis, therefore the origin will not move.
|
||||||
///
|
///
|
||||||
@ -134,25 +135,25 @@ pub async fn scale(exec_state: &mut ExecState, args: Args) -> Result<KclValue, K
|
|||||||
keywords = true,
|
keywords = true,
|
||||||
unlabeled_first = true,
|
unlabeled_first = true,
|
||||||
args = {
|
args = {
|
||||||
solids = {docs = "The solid or set of solids to scale."},
|
objects = {docs = "The solid, sketch, or set of solids or sketches to scale."},
|
||||||
scale = {docs = "The scale factor for the x, y, and z axes."},
|
scale = {docs = "The scale factor for the x, y, and z axes."},
|
||||||
global = {docs = "If true, the transform is applied in global space. The origin of the model will move. By default, the transform is applied in local sketch axis, therefore the origin will not move."}
|
global = {docs = "If true, the transform is applied in global space. The origin of the model will move. By default, the transform is applied in local sketch axis, therefore the origin will not move."}
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
async fn inner_scale(
|
async fn inner_scale(
|
||||||
solids: SolidOrImportedGeometry,
|
objects: SolidOrSketchOrImportedGeometry,
|
||||||
scale: [f64; 3],
|
scale: [f64; 3],
|
||||||
global: Option<bool>,
|
global: Option<bool>,
|
||||||
exec_state: &mut ExecState,
|
exec_state: &mut ExecState,
|
||||||
args: Args,
|
args: Args,
|
||||||
) -> Result<SolidOrImportedGeometry, KclError> {
|
) -> Result<SolidOrSketchOrImportedGeometry, KclError> {
|
||||||
for solid_id in solids.ids() {
|
for object_id in objects.ids() {
|
||||||
let id = exec_state.next_uuid();
|
let id = exec_state.next_uuid();
|
||||||
|
|
||||||
args.batch_modeling_cmd(
|
args.batch_modeling_cmd(
|
||||||
id,
|
id,
|
||||||
ModelingCmd::from(mcmd::SetObjectTransform {
|
ModelingCmd::from(mcmd::SetObjectTransform {
|
||||||
object_id: solid_id,
|
object_id,
|
||||||
transforms: vec![shared::ComponentTransform {
|
transforms: vec![shared::ComponentTransform {
|
||||||
scale: Some(shared::TransformBy::<Point3d<f64>> {
|
scale: Some(shared::TransformBy::<Point3d<f64>> {
|
||||||
property: Point3d {
|
property: Point3d {
|
||||||
@ -172,14 +173,15 @@ async fn inner_scale(
|
|||||||
.await?;
|
.await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(solids)
|
Ok(objects)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Move a solid.
|
/// Move a solid or a sketch.
|
||||||
pub async fn translate(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
pub async fn translate(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||||
let solids = args.get_unlabeled_kw_arg_typed(
|
let objects = args.get_unlabeled_kw_arg_typed(
|
||||||
"solids",
|
"objects",
|
||||||
&RuntimeType::Union(vec![
|
&RuntimeType::Union(vec![
|
||||||
|
RuntimeType::Array(PrimitiveType::Sketch, ArrayLen::NonEmpty),
|
||||||
RuntimeType::Array(PrimitiveType::Solid, ArrayLen::NonEmpty),
|
RuntimeType::Array(PrimitiveType::Solid, ArrayLen::NonEmpty),
|
||||||
RuntimeType::Primitive(PrimitiveType::ImportedGeometry),
|
RuntimeType::Primitive(PrimitiveType::ImportedGeometry),
|
||||||
]),
|
]),
|
||||||
@ -188,11 +190,11 @@ pub async fn translate(exec_state: &mut ExecState, args: Args) -> Result<KclValu
|
|||||||
let translate = args.get_kw_arg("translate")?;
|
let translate = args.get_kw_arg("translate")?;
|
||||||
let global = args.get_kw_arg_opt("global")?;
|
let global = args.get_kw_arg_opt("global")?;
|
||||||
|
|
||||||
let solids = inner_translate(solids, translate, global, exec_state, args).await?;
|
let objects = inner_translate(objects, translate, global, exec_state, args).await?;
|
||||||
Ok(solids.into())
|
Ok(objects.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Move a solid.
|
/// Move a solid or a sketch.
|
||||||
///
|
///
|
||||||
/// ```no_run
|
/// ```no_run
|
||||||
/// // Move a pipe.
|
/// // Move a pipe.
|
||||||
@ -275,31 +277,80 @@ pub async fn translate(exec_state: &mut ExecState, args: Args) -> Result<KclValu
|
|||||||
/// // Move the sweeps.
|
/// // Move the sweeps.
|
||||||
/// translate(parts, translate = [1.0, 1.0, 2.5])
|
/// translate(parts, translate = [1.0, 1.0, 2.5])
|
||||||
/// ```
|
/// ```
|
||||||
|
///
|
||||||
|
/// ```no_run
|
||||||
|
/// // Move a sketch.
|
||||||
|
///
|
||||||
|
/// fn square(length){
|
||||||
|
/// l = length / 2
|
||||||
|
/// p0 = [-l, -l]
|
||||||
|
/// p1 = [-l, l]
|
||||||
|
/// p2 = [l, l]
|
||||||
|
/// p3 = [l, -l]
|
||||||
|
///
|
||||||
|
/// return startSketchOn(XY)
|
||||||
|
/// |> startProfileAt(p0, %)
|
||||||
|
/// |> line(endAbsolute = p1)
|
||||||
|
/// |> line(endAbsolute = p2)
|
||||||
|
/// |> line(endAbsolute = p3)
|
||||||
|
/// |> close()
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// square(10)
|
||||||
|
/// |> translate(
|
||||||
|
/// translate = [5, 5, 0],
|
||||||
|
/// )
|
||||||
|
/// |> extrude(
|
||||||
|
/// length = 10,
|
||||||
|
/// )
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// ```no_run
|
||||||
|
/// // Translate and rotate a sketch to create a loft.
|
||||||
|
/// sketch001 = startSketchOn('XY')
|
||||||
|
///
|
||||||
|
/// fn square() {
|
||||||
|
/// return startProfileAt([-10, 10], sketch001)
|
||||||
|
/// |> xLine(length = 20)
|
||||||
|
/// |> yLine(length = -20)
|
||||||
|
/// |> xLine(length = -20)
|
||||||
|
/// |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||||
|
/// |> close()
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// profile001 = square()
|
||||||
|
///
|
||||||
|
/// profile002 = square()
|
||||||
|
/// |> translate(translate = [0, 0, 20])
|
||||||
|
/// |> rotate(axis = [0, 0, 1.0], angle = 45)
|
||||||
|
///
|
||||||
|
/// loft([profile001, profile002])
|
||||||
|
/// ```
|
||||||
#[stdlib {
|
#[stdlib {
|
||||||
name = "translate",
|
name = "translate",
|
||||||
feature_tree_operation = false,
|
feature_tree_operation = false,
|
||||||
keywords = true,
|
keywords = true,
|
||||||
unlabeled_first = true,
|
unlabeled_first = true,
|
||||||
args = {
|
args = {
|
||||||
solids = {docs = "The solid or set of solids to move."},
|
objects = {docs = "The solid, sketch, or set of solids or sketches to move."},
|
||||||
translate = {docs = "The amount to move the solid in all three axes."},
|
translate = {docs = "The amount to move the solid or sketch in all three axes."},
|
||||||
global = {docs = "If true, the transform is applied in global space. The origin of the model will move. By default, the transform is applied in local sketch axis, therefore the origin will not move."}
|
global = {docs = "If true, the transform is applied in global space. The origin of the model will move. By default, the transform is applied in local sketch axis, therefore the origin will not move."}
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
async fn inner_translate(
|
async fn inner_translate(
|
||||||
solids: SolidOrImportedGeometry,
|
objects: SolidOrSketchOrImportedGeometry,
|
||||||
translate: [f64; 3],
|
translate: [f64; 3],
|
||||||
global: Option<bool>,
|
global: Option<bool>,
|
||||||
exec_state: &mut ExecState,
|
exec_state: &mut ExecState,
|
||||||
args: Args,
|
args: Args,
|
||||||
) -> Result<SolidOrImportedGeometry, KclError> {
|
) -> Result<SolidOrSketchOrImportedGeometry, KclError> {
|
||||||
for solid_id in solids.ids() {
|
for object_id in objects.ids() {
|
||||||
let id = exec_state.next_uuid();
|
let id = exec_state.next_uuid();
|
||||||
|
|
||||||
args.batch_modeling_cmd(
|
args.batch_modeling_cmd(
|
||||||
id,
|
id,
|
||||||
ModelingCmd::from(mcmd::SetObjectTransform {
|
ModelingCmd::from(mcmd::SetObjectTransform {
|
||||||
object_id: solid_id,
|
object_id,
|
||||||
transforms: vec![shared::ComponentTransform {
|
transforms: vec![shared::ComponentTransform {
|
||||||
translate: Some(shared::TransformBy::<Point3d<LengthUnit>> {
|
translate: Some(shared::TransformBy::<Point3d<LengthUnit>> {
|
||||||
property: shared::Point3d {
|
property: shared::Point3d {
|
||||||
@ -319,14 +370,15 @@ async fn inner_translate(
|
|||||||
.await?;
|
.await?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(solids)
|
Ok(objects)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Rotate a solid.
|
/// Rotate a solid or a sketch.
|
||||||
pub async fn rotate(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
pub async fn rotate(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
|
||||||
let solids = args.get_unlabeled_kw_arg_typed(
|
let objects = args.get_unlabeled_kw_arg_typed(
|
||||||
"solid",
|
"objects",
|
||||||
&RuntimeType::Union(vec![
|
&RuntimeType::Union(vec![
|
||||||
|
RuntimeType::Array(PrimitiveType::Sketch, ArrayLen::NonEmpty),
|
||||||
RuntimeType::Array(PrimitiveType::Solid, ArrayLen::NonEmpty),
|
RuntimeType::Array(PrimitiveType::Solid, ArrayLen::NonEmpty),
|
||||||
RuntimeType::Primitive(PrimitiveType::ImportedGeometry),
|
RuntimeType::Primitive(PrimitiveType::ImportedGeometry),
|
||||||
]),
|
]),
|
||||||
@ -439,11 +491,11 @@ pub async fn rotate(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let solids = inner_rotate(solids, roll, pitch, yaw, axis, angle, global, exec_state, args).await?;
|
let objects = inner_rotate(objects, roll, pitch, yaw, axis, angle, global, exec_state, args).await?;
|
||||||
Ok(solids.into())
|
Ok(objects.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Rotate a solid.
|
/// Rotate a solid or a sketch.
|
||||||
///
|
///
|
||||||
/// ### Using Roll, Pitch, and Yaw
|
/// ### Using Roll, Pitch, and Yaw
|
||||||
///
|
///
|
||||||
@ -589,13 +641,35 @@ pub async fn rotate(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
|
|||||||
/// // Rotate the sweeps.
|
/// // Rotate the sweeps.
|
||||||
/// rotate(parts, axis = [0, 0, 1.0], angle = 90)
|
/// rotate(parts, axis = [0, 0, 1.0], angle = 90)
|
||||||
/// ```
|
/// ```
|
||||||
|
///
|
||||||
|
/// ```no_run
|
||||||
|
/// // Translate and rotate a sketch to create a loft.
|
||||||
|
/// sketch001 = startSketchOn('XY')
|
||||||
|
///
|
||||||
|
/// fn square() {
|
||||||
|
/// return startProfileAt([-10, 10], sketch001)
|
||||||
|
/// |> xLine(length = 20)
|
||||||
|
/// |> yLine(length = -20)
|
||||||
|
/// |> xLine(length = -20)
|
||||||
|
/// |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
|
||||||
|
/// |> close()
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// profile001 = square()
|
||||||
|
///
|
||||||
|
/// profile002 = square()
|
||||||
|
/// |> translate(translate = [0, 0, 20])
|
||||||
|
/// |> rotate(axis = [0, 0, 1.0], angle = 45)
|
||||||
|
///
|
||||||
|
/// loft([profile001, profile002])
|
||||||
|
/// ```
|
||||||
#[stdlib {
|
#[stdlib {
|
||||||
name = "rotate",
|
name = "rotate",
|
||||||
feature_tree_operation = false,
|
feature_tree_operation = false,
|
||||||
keywords = true,
|
keywords = true,
|
||||||
unlabeled_first = true,
|
unlabeled_first = true,
|
||||||
args = {
|
args = {
|
||||||
solids = {docs = "The solid or set of solids to rotate."},
|
objects = {docs = "The solid, sketch, or set of solids or sketches to rotate."},
|
||||||
roll = {docs = "The roll angle in degrees. Must be used with `pitch` and `yaw`. Must be between -360 and 360.", include_in_snippet = true},
|
roll = {docs = "The roll angle in degrees. Must be used with `pitch` and `yaw`. Must be between -360 and 360.", include_in_snippet = true},
|
||||||
pitch = {docs = "The pitch angle in degrees. Must be used with `roll` and `yaw`. Must be between -360 and 360.", include_in_snippet = true},
|
pitch = {docs = "The pitch angle in degrees. Must be used with `roll` and `yaw`. Must be between -360 and 360.", include_in_snippet = true},
|
||||||
yaw = {docs = "The yaw angle in degrees. Must be used with `roll` and `pitch`. Must be between -360 and 360.", include_in_snippet = true},
|
yaw = {docs = "The yaw angle in degrees. Must be used with `roll` and `pitch`. Must be between -360 and 360.", include_in_snippet = true},
|
||||||
@ -606,7 +680,7 @@ pub async fn rotate(exec_state: &mut ExecState, args: Args) -> Result<KclValue,
|
|||||||
}]
|
}]
|
||||||
#[allow(clippy::too_many_arguments)]
|
#[allow(clippy::too_many_arguments)]
|
||||||
async fn inner_rotate(
|
async fn inner_rotate(
|
||||||
solids: SolidOrImportedGeometry,
|
objects: SolidOrSketchOrImportedGeometry,
|
||||||
roll: Option<f64>,
|
roll: Option<f64>,
|
||||||
pitch: Option<f64>,
|
pitch: Option<f64>,
|
||||||
yaw: Option<f64>,
|
yaw: Option<f64>,
|
||||||
@ -615,15 +689,15 @@ async fn inner_rotate(
|
|||||||
global: Option<bool>,
|
global: Option<bool>,
|
||||||
exec_state: &mut ExecState,
|
exec_state: &mut ExecState,
|
||||||
args: Args,
|
args: Args,
|
||||||
) -> Result<SolidOrImportedGeometry, KclError> {
|
) -> Result<SolidOrSketchOrImportedGeometry, KclError> {
|
||||||
for solid_id in solids.ids() {
|
for object_id in objects.ids() {
|
||||||
let id = exec_state.next_uuid();
|
let id = exec_state.next_uuid();
|
||||||
|
|
||||||
if let (Some(roll), Some(pitch), Some(yaw)) = (roll, pitch, yaw) {
|
if let (Some(roll), Some(pitch), Some(yaw)) = (roll, pitch, yaw) {
|
||||||
args.batch_modeling_cmd(
|
args.batch_modeling_cmd(
|
||||||
id,
|
id,
|
||||||
ModelingCmd::from(mcmd::SetObjectTransform {
|
ModelingCmd::from(mcmd::SetObjectTransform {
|
||||||
object_id: solid_id,
|
object_id,
|
||||||
transforms: vec![shared::ComponentTransform {
|
transforms: vec![shared::ComponentTransform {
|
||||||
rotate_rpy: Some(shared::TransformBy::<Point3d<f64>> {
|
rotate_rpy: Some(shared::TransformBy::<Point3d<f64>> {
|
||||||
property: shared::Point3d {
|
property: shared::Point3d {
|
||||||
@ -647,7 +721,7 @@ async fn inner_rotate(
|
|||||||
args.batch_modeling_cmd(
|
args.batch_modeling_cmd(
|
||||||
id,
|
id,
|
||||||
ModelingCmd::from(mcmd::SetObjectTransform {
|
ModelingCmd::from(mcmd::SetObjectTransform {
|
||||||
object_id: solid_id,
|
object_id,
|
||||||
transforms: vec![shared::ComponentTransform {
|
transforms: vec![shared::ComponentTransform {
|
||||||
rotate_angle_axis: Some(shared::TransformBy::<Point4d<f64>> {
|
rotate_angle_axis: Some(shared::TransformBy::<Point4d<f64>> {
|
||||||
property: shared::Point4d {
|
property: shared::Point4d {
|
||||||
@ -669,7 +743,7 @@ async fn inner_rotate(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(solids)
|
Ok(objects)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
source: kcl/src/simulation_tests.rs
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
description: Result of parsing import_glob.kcl
|
description: Result of parsing import_glob.kcl
|
||||||
---
|
---
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
source: kcl/src/simulation_tests.rs
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
description: Result of parsing invalid_index_str.kcl
|
description: Result of parsing invalid_index_str.kcl
|
||||||
---
|
---
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
source: kcl/src/simulation_tests.rs
|
source: kcl-lib/src/simulation_tests.rs
|
||||||
description: Error from executing invalid_index_str.kcl
|
description: Error from executing invalid_index_str.kcl
|
||||||
---
|
---
|
||||||
KCL Semantic error
|
KCL Semantic error
|
||||||
|
@ -493,7 +493,7 @@ DATA;
|
|||||||
#477 = CARTESIAN_POINT('NONE', (0.17795201496890334, 0.08584714229719675, -0.0020772165411061887));
|
#477 = CARTESIAN_POINT('NONE', (0.17795201496890334, 0.08584714229719675, -0.0020772165411061887));
|
||||||
#478 = CARTESIAN_POINT('NONE', (0.1778867385149994, 0.08582338363052132, -0.001955831074479715));
|
#478 = CARTESIAN_POINT('NONE', (0.1778867385149994, 0.08582338363052132, -0.001955831074479715));
|
||||||
#479 = CARTESIAN_POINT('NONE', (0.17785399900826404, 0.08581146743438747, -0.0018949500053573982));
|
#479 = CARTESIAN_POINT('NONE', (0.17785399900826404, 0.08581146743438747, -0.0018949500053573982));
|
||||||
#480 = CARTESIAN_POINT('NONE', (0.177795228689155, 0.08579007680516954, -0.0017710544700858236));
|
#480 = CARTESIAN_POINT('NONE', (0.177795228689155, 0.08579007680516954, -0.0017710544700858233));
|
||||||
#481 = CARTESIAN_POINT('NONE', (0.17776575234442069, 0.08577934830189664, -0.0017089144721400538));
|
#481 = CARTESIAN_POINT('NONE', (0.17776575234442069, 0.08577934830189664, -0.0017089144721400538));
|
||||||
#482 = CARTESIAN_POINT('NONE', (0.17771356944994834, 0.08576035529719464, -0.0015830812806709412));
|
#482 = CARTESIAN_POINT('NONE', (0.17771356944994834, 0.08576035529719464, -0.0015830812806709412));
|
||||||
#483 = CARTESIAN_POINT('NONE', (0.17768739703826125, 0.0857508293262177, -0.0015199694482529182));
|
#483 = CARTESIAN_POINT('NONE', (0.17768739703826125, 0.0857508293262177, -0.0015199694482529182));
|
||||||
@ -501,22 +501,22 @@ DATA;
|
|||||||
#485 = CARTESIAN_POINT('NONE', (0.17761897023322498, 0.08572592402644587, -0.001328967798546515));
|
#485 = CARTESIAN_POINT('NONE', (0.17761897023322498, 0.08572592402644587, -0.001328967798546515));
|
||||||
#486 = CARTESIAN_POINT('NONE', (0.1775799821690043, 0.08571173354325107, -0.0012009514248958885));
|
#486 = CARTESIAN_POINT('NONE', (0.1775799821690043, 0.08571173354325107, -0.0012009514248958885));
|
||||||
#487 = CARTESIAN_POINT('NONE', (0.17756042764490243, 0.08570461628438747, -0.001136744614067409));
|
#487 = CARTESIAN_POINT('NONE', (0.17756042764490243, 0.08570461628438747, -0.001136744614067409));
|
||||||
#488 = CARTESIAN_POINT('NONE', (0.17752794179056877, 0.08569279241010172, -0.0010084523037486074));
|
#488 = CARTESIAN_POINT('NONE', (0.17752794179056877, 0.08569279241010172, -0.001008452303748607));
|
||||||
#489 = CARTESIAN_POINT('NONE', (0.17751164845992426, 0.08568686212760836, -0.0009441070964560733));
|
#489 = CARTESIAN_POINT('NONE', (0.17751164845992426, 0.08568686212760836, -0.0009441070964560733));
|
||||||
#490 = CARTESIAN_POINT('NONE', (0.17748553743296888, 0.08567735849882824, -0.0008160519293165438));
|
#490 = CARTESIAN_POINT('NONE', (0.17748553743296888, 0.08567735849882824, -0.0008160519293165438));
|
||||||
#491 = CARTESIAN_POINT('NONE', (0.1774724414068868, 0.0856725919390682, -0.0007518256615535176));
|
#491 = CARTESIAN_POINT('NONE', (0.1774724414068868, 0.0856725919390682, -0.0007518256615535176));
|
||||||
#492 = CARTESIAN_POINT('NONE', (0.17745253555268684, 0.08566534680661167, -0.0006244912002219513));
|
#492 = CARTESIAN_POINT('NONE', (0.17745253555268684, 0.08566534680661167, -0.0006244912002219513));
|
||||||
#493 = CARTESIAN_POINT('NONE', (0.1774425517406279, 0.0856617129991869, -0.0005606264035751191));
|
#493 = CARTESIAN_POINT('NONE', (0.1774425517406279, 0.0856617129991869, -0.0005606264035751191));
|
||||||
#494 = CARTESIAN_POINT('NONE', (0.1774286442148312, 0.08565665107792858, -0.00043446263391102273));
|
#494 = CARTESIAN_POINT('NONE', (0.1774286442148312, 0.08565665107792858, -0.0004344626339110227));
|
||||||
#495 = CARTESIAN_POINT('NONE', (0.17742166887368957, 0.08565411226346764, -0.00037118499948639576));
|
#495 = CARTESIAN_POINT('NONE', (0.17742166887368957, 0.08565411226346764, -0.00037118499948639576));
|
||||||
#496 = CARTESIAN_POINT('NONE', (0.1774135209818589, 0.08565114667580877, -0.00024660524432531703));
|
#496 = CARTESIAN_POINT('NONE', (0.1774135209818589, 0.08565114667580877, -0.0002466052443253171));
|
||||||
#497 = CARTESIAN_POINT('NONE', (0.17740943439406934, 0.08564965928071719, -0.0001841220748323609));
|
#497 = CARTESIAN_POINT('NONE', (0.17740943439406934, 0.08564965928071719, -0.0001841220748323609));
|
||||||
#498 = CARTESIAN_POINT('NONE', (0.1774067810255368, 0.08564869353434526, -0.00006150086036782763));
|
#498 = CARTESIAN_POINT('NONE', (0.1774067810255368, 0.08564869353434526, -0.00006150086036782758));
|
||||||
#499 = CARTESIAN_POINT('NONE', (0.17740545022443252, 0.085648209162754, 0.0000000000000000034978213206350045));
|
#499 = CARTESIAN_POINT('NONE', (0.17740545022443252, 0.085648209162754, 0.0000000000000000034978213206350045));
|
||||||
#500 = CARTESIAN_POINT('NONE', (0.177408103592965, 0.08564917490912594, 0.00012262121446453774));
|
#500 = CARTESIAN_POINT('NONE', (0.177408103592965, 0.08564917490912594, 0.00012262121446453774));
|
||||||
#501 = CARTESIAN_POINT('NONE', (0.17740912580390183, 0.08564954696317403, 0.00016986107013356122));
|
#501 = CARTESIAN_POINT('NONE', (0.17740912580390183, 0.08564954696317403, 0.00016986107013356122));
|
||||||
#502 = CARTESIAN_POINT('NONE', (0.17740943439406934, 0.08564965928071719, 0.00018412207483236787));
|
#502 = CARTESIAN_POINT('NONE', (0.17740943439406934, 0.08564965928071719, 0.00018412207483236787));
|
||||||
#503 = CARTESIAN_POINT('NONE', (0.17741758228590004, 0.08565262486837608, 0.000308701829993446));
|
#503 = CARTESIAN_POINT('NONE', (0.17741758228590004, 0.08565262486837608, 0.00030870182999344597));
|
||||||
#504 = CARTESIAN_POINT('NONE', (0.17742166887368963, 0.08565411226346765, 0.0003711849994864027));
|
#504 = CARTESIAN_POINT('NONE', (0.17742166887368963, 0.08565411226346765, 0.0003711849994864027));
|
||||||
#505 = CARTESIAN_POINT('NONE', (0.17743557639948632, 0.08565917418472598, 0.0004973487691505));
|
#505 = CARTESIAN_POINT('NONE', (0.17743557639948632, 0.08565917418472598, 0.0004973487691505));
|
||||||
#506 = CARTESIAN_POINT('NONE', (0.1774425517406279, 0.0856617129991869, 0.0005606264035751264));
|
#506 = CARTESIAN_POINT('NONE', (0.1774425517406279, 0.0856617129991869, 0.0005606264035751264));
|
||||||
@ -526,7 +526,7 @@ DATA;
|
|||||||
#510 = CARTESIAN_POINT('NONE', (0.17751164845992423, 0.08568686212760836, 0.0009441070964560802));
|
#510 = CARTESIAN_POINT('NONE', (0.17751164845992423, 0.08568686212760836, 0.0009441070964560802));
|
||||||
#511 = CARTESIAN_POINT('NONE', (0.17754413431425792, 0.0856986860018941, 0.001072399406774878));
|
#511 = CARTESIAN_POINT('NONE', (0.17754413431425792, 0.0856986860018941, 0.001072399406774878));
|
||||||
#512 = CARTESIAN_POINT('NONE', (0.17756042764490243, 0.08570461628438747, 0.001136744614067416));
|
#512 = CARTESIAN_POINT('NONE', (0.17756042764490243, 0.08570461628438747, 0.001136744614067416));
|
||||||
#513 = CARTESIAN_POINT('NONE', (0.1775994157091231, 0.08571880676758226, 0.0012647609877180397));
|
#513 = CARTESIAN_POINT('NONE', (0.1775994157091231, 0.08571880676758226, 0.00126476098771804));
|
||||||
#514 = CARTESIAN_POINT('NONE', (0.17761897023322495, 0.08572592402644587, 0.001328967798546522));
|
#514 = CARTESIAN_POINT('NONE', (0.17761897023322495, 0.08572592402644587, 0.001328967798546522));
|
||||||
#515 = CARTESIAN_POINT('NONE', (0.1776645409663547, 0.08574251040321469, 0.0014561706571556946));
|
#515 = CARTESIAN_POINT('NONE', (0.1776645409663547, 0.08574251040321469, 0.0014561706571556946));
|
||||||
#516 = CARTESIAN_POINT('NONE', (0.17768739703826128, 0.08575082932621772, 0.0015199694482529254));
|
#516 = CARTESIAN_POINT('NONE', (0.17768739703826128, 0.08575082932621772, 0.0015199694482529254));
|
||||||
@ -541,7 +541,7 @@ DATA;
|
|||||||
#525 = CARTESIAN_POINT('NONE', (0.1781128423383614, 0.08590567862438238, 0.0023333333333333322));
|
#525 = CARTESIAN_POINT('NONE', (0.1781128423383614, 0.08590567862438238, 0.0023333333333333322));
|
||||||
#526 = CARTESIAN_POINT('NONE', (0.17813740492873031, 0.085914618668799, 0.0023695300981384096));
|
#526 = CARTESIAN_POINT('NONE', (0.17813740492873031, 0.085914618668799, 0.0023695300981384096));
|
||||||
#527 = CARTESIAN_POINT('NONE', (0.1781764324402324, 0.08592882350961822, 0.002427043154927221));
|
#527 = CARTESIAN_POINT('NONE', (0.1781764324402324, 0.08592882350961822, 0.002427043154927221));
|
||||||
#528 = CARTESIAN_POINT('NONE', (0.17826016236587194, 0.08595929868519923, 0.002537540011148935));
|
#528 = CARTESIAN_POINT('NONE', (0.17826016236587194, 0.08595929868519923, 0.0025375400111489355));
|
||||||
#529 = CARTESIAN_POINT('NONE', (0.1783021572399878, 0.08597458355679569, 0.0025929598808285105));
|
#529 = CARTESIAN_POINT('NONE', (0.1783021572399878, 0.08597458355679569, 0.0025929598808285105));
|
||||||
#530 = CARTESIAN_POINT('NONE', (0.17839149551745315, 0.08600710000382542, 0.002698774175843207));
|
#530 = CARTESIAN_POINT('NONE', (0.17839149551745315, 0.08600710000382542, 0.002698774175843207));
|
||||||
#531 = CARTESIAN_POINT('NONE', (0.17843630326912885, 0.08602340867828413, 0.002751845499684166));
|
#531 = CARTESIAN_POINT('NONE', (0.17843630326912885, 0.08602340867828413, 0.002751845499684166));
|
||||||
@ -571,14 +571,14 @@ DATA;
|
|||||||
#555 = CARTESIAN_POINT('NONE', (0.18045773597500814, 0.08675914940857034, 0.0039287094795402685));
|
#555 = CARTESIAN_POINT('NONE', (0.18045773597500814, 0.08675914940857034, 0.0039287094795402685));
|
||||||
#556 = CARTESIAN_POINT('NONE', (0.18057739124020727, 0.08680270032765071, 0.003949892845083641));
|
#556 = CARTESIAN_POINT('NONE', (0.18057739124020727, 0.08680270032765071, 0.003949892845083641));
|
||||||
#557 = CARTESIAN_POINT('NONE', (0.18063740452411917, 0.08682454335868699, 0.003960517394939006));
|
#557 = CARTESIAN_POINT('NONE', (0.18063740452411917, 0.08682454335868699, 0.003960517394939006));
|
||||||
#558 = CARTESIAN_POINT('NONE', (0.18067644581277573, 0.08683875321397622, 0.003965391194281956));
|
#558 = CARTESIAN_POINT('NONE', (0.18067644581277573, 0.08683875321397622, 0.003965391194281957));
|
||||||
#559 = CARTESIAN_POINT('NONE', (0.18075595969889122, 0.08686769387792627, 0.003975317473337812));
|
#559 = CARTESIAN_POINT('NONE', (0.18075595969889122, 0.08686769387792627, 0.003975317473337812));
|
||||||
#560 = CARTESIAN_POINT('NONE', (0.18081542123074262, 0.086889336087801, 0.003982740475621818));
|
#560 = CARTESIAN_POINT('NONE', (0.18081542123074262, 0.086889336087801, 0.003982740475621818));
|
||||||
#561 = CARTESIAN_POINT('NONE', (0.18093248791863173, 0.08693194484256649, 0.003991411280166247));
|
#561 = CARTESIAN_POINT('NONE', (0.18093248791863173, 0.08693194484256649, 0.003991411280166247));
|
||||||
#562 = CARTESIAN_POINT('NONE', (0.18099120289757753, 0.08695331532962879, 0.003995760135638706));
|
#562 = CARTESIAN_POINT('NONE', (0.18099120289757753, 0.08695331532962879, 0.003995760135638706));
|
||||||
#563 = CARTESIAN_POINT('NONE', (0.18110642915904954, 0.0869952542245111, 0.003998583791181479));
|
#563 = CARTESIAN_POINT('NONE', (0.18110642915904954, 0.0869952542245111, 0.003998583791181479));
|
||||||
#564 = CARTESIAN_POINT('NONE', (0.1811642210692703, 0.08701628874230968, 0.0040000000000000036));
|
#564 = CARTESIAN_POINT('NONE', (0.1811642210692703, 0.08701628874230968, 0.0040000000000000036));
|
||||||
#565 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#434, #435, #436, #437, #438, #439, #440, #441, #442, #443, #444, #445, #446, #447, #448, #449, #450, #451, #452, #453, #454, #455, #456, #457, #458, #459, #460, #461, #462, #463, #464, #465, #466, #467, #468, #469, #470, #471, #472, #473, #474, #475, #476, #477, #478, #479, #480, #481, #482, #483, #484, #485, #486, #487, #488, #489, #490, #491, #492, #493, #494, #495, #496, #497, #498, #499, #500, #501, #502, #503, #504, #505, #506, #507, #508, #509, #510, #511, #512, #513, #514, #515, #516, #517, #518, #519, #520, #521, #522, #523, #524, #525, #526, #527, #528, #529, #530, #531, #532, #533, #534, #535, #536, #537, #538, #539, #540, #541, #542, #543, #544, #545, #546, #547, #548, #549, #550, #551, #552, #553, #554, #555, #556, #557, #558, #559, #560, #561, #562, #563, #564), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (0, 0.007751937984496124, 0.015503875968992248, 0.023255813953488372, 0.031007751937984496, 0.03875968992248062, 0.046511627906976744, 0.05426356589147287, 0.06201550387596899, 0.06976744186046512, 0.07751937984496124, 0.08527131782945736, 0.09302325581395349, 0.10077519379844961, 0.10852713178294573, 0.11627906976744186, 0.12403100775193798, 0.13178294573643412, 0.13953488372093023, 0.14728682170542634, 0.15503875968992248, 0.16279069767441862, 0.17054263565891473, 0.17829457364341084, 0.18604651162790697, 0.1937984496124031, 0.20155038759689922, 0.20930232558139533, 0.21705426356589147, 0.2248062015503876, 0.23255813953488372, 0.24031007751937983, 0.24806201550387597, 0.2558139534883721, 0.26356589147286824, 0.2713178294573643, 0.27906976744186046, 0.2868217054263566, 0.2945736434108527, 0.3023255813953488, 0.31007751937984496, 0.3178294573643411, 0.32558139534883723, 0.3333333333333333, 0.34108527131782945, 0.3488372093023256, 0.3565891472868217, 0.3643410852713178, 0.37209302325581395, 0.3798449612403101, 0.3875968992248062, 0.3953488372093023, 0.40310077519379844, 0.4108527131782946, 0.41860465116279066, 0.4263565891472868, 0.43410852713178294, 0.4418604651162791, 0.4496124031007752, 0.4573643410852713, 0.46511627906976744, 0.4728682170542636, 0.48062015503875966, 0.4883720930232558, 0.49612403100775193, 0.5038759689922481, 0.5116279069767442, 0.5193798449612403, 0.5271317829457365, 0.5348837209302326, 0.5426356589147288, 0.5503875968992248, 0.5581395348837209, 0.5658914728682171, 0.5736434108527132, 0.5813953488372093, 0.5891472868217054, 0.5968992248062015, 0.6046511627906976, 0.6124031007751938, 0.6201550387596899, 0.627906976744186, 0.6356589147286822, 0.6434108527131783, 0.6511627906976745, 0.6589147286821706, 0.6666666666666667, 0.6744186046511628, 0.6821705426356589, 0.689922480620155, 0.6976744186046512, 0.7054263565891473, 0.7131782945736433, 0.7209302325581395, 0.7286821705426356, 0.7364341085271318, 0.7441860465116279, 0.751937984496124, 0.7596899224806202, 0.7674418604651163, 0.7751937984496124, 0.7829457364341086, 0.7906976744186047, 0.7984496124031008, 0.8062015503875969, 0.813953488372093, 0.8217054263565892, 0.8294573643410853, 0.8372093023255813, 0.8449612403100775, 0.8527131782945736, 0.8604651162790697, 0.8682170542635659, 0.875968992248062, 0.8837209302325582, 0.8914728682170543, 0.8992248062015504, 0.9069767441860466, 0.9147286821705426, 0.9224806201550387, 0.9302325581395349, 0.937984496124031, 0.9457364341085271, 0.9534883720930233, 0.9612403100775194, 0.9689922480620154, 0.9767441860465116, 0.9844961240310077, 0.9922480620155039, 1), .UNSPECIFIED.);
|
#565 = B_SPLINE_CURVE_WITH_KNOTS('NONE', 2, (#434, #435, #436, #437, #438, #439, #440, #441, #442, #443, #444, #445, #446, #447, #448, #449, #450, #451, #452, #453, #454, #455, #456, #457, #458, #459, #460, #461, #462, #463, #464, #465, #466, #467, #468, #469, #470, #471, #472, #473, #474, #475, #476, #477, #478, #479, #480, #481, #482, #483, #484, #485, #486, #487, #488, #489, #490, #491, #492, #493, #494, #495, #496, #497, #498, #499, #500, #501, #502, #503, #504, #505, #506, #507, #508, #509, #510, #511, #512, #513, #514, #515, #516, #517, #518, #519, #520, #521, #522, #523, #524, #525, #526, #527, #528, #529, #530, #531, #532, #533, #534, #535, #536, #537, #538, #539, #540, #541, #542, #543, #544, #545, #546, #547, #548, #549, #550, #551, #552, #553, #554, #555, #556, #557, #558, #559, #560, #561, #562, #563, #564), .UNSPECIFIED., .F., .F., (3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3), (-1, -0.9922480620155039, -0.9844961240310077, -0.9767441860465116, -0.9689922480620154, -0.9612403100775194, -0.9534883720930233, -0.9457364341085271, -0.937984496124031, -0.9302325581395349, -0.9224806201550387, -0.9147286821705426, -0.9069767441860466, -0.8992248062015504, -0.8914728682170543, -0.8837209302325582, -0.875968992248062, -0.8682170542635659, -0.8604651162790697, -0.8527131782945736, -0.8449612403100775, -0.8372093023255813, -0.8294573643410853, -0.8217054263565892, -0.813953488372093, -0.8062015503875969, -0.7984496124031008, -0.7906976744186047, -0.7829457364341086, -0.7751937984496124, -0.7674418604651163, -0.7596899224806202, -0.751937984496124, -0.7441860465116279, -0.7364341085271318, -0.7286821705426356, -0.7209302325581395, -0.7131782945736433, -0.7054263565891473, -0.6976744186046512, -0.689922480620155, -0.6821705426356589, -0.6744186046511628, -0.6666666666666667, -0.6589147286821706, -0.6511627906976745, -0.6434108527131783, -0.6356589147286822, -0.627906976744186, -0.6201550387596899, -0.6124031007751938, -0.6046511627906976, -0.5968992248062015, -0.5891472868217054, -0.5813953488372093, -0.5736434108527132, -0.5658914728682171, -0.5581395348837209, -0.5503875968992248, -0.5426356589147288, -0.5348837209302326, -0.5271317829457365, -0.5193798449612403, -0.5116279069767442, -0.5038759689922481, -0.49612403100775193, -0.4883720930232558, -0.48062015503875966, -0.4728682170542636, -0.46511627906976744, -0.4573643410852713, -0.4496124031007752, -0.4418604651162791, -0.43410852713178294, -0.4263565891472868, -0.41860465116279066, -0.4108527131782946, -0.40310077519379844, -0.3953488372093023, -0.3875968992248062, -0.3798449612403101, -0.37209302325581395, -0.3643410852713178, -0.3565891472868217, -0.3488372093023256, -0.34108527131782945, -0.3333333333333333, -0.32558139534883723, -0.3178294573643411, -0.31007751937984496, -0.3023255813953488, -0.2945736434108527, -0.2868217054263566, -0.27906976744186046, -0.2713178294573643, -0.26356589147286824, -0.2558139534883721, -0.24806201550387597, -0.24031007751937983, -0.23255813953488372, -0.2248062015503876, -0.21705426356589147, -0.20930232558139533, -0.20155038759689922, -0.1937984496124031, -0.18604651162790697, -0.17829457364341084, -0.17054263565891473, -0.16279069767441862, -0.15503875968992248, -0.14728682170542634, -0.13953488372093023, -0.13178294573643412, -0.12403100775193798, -0.11627906976744186, -0.10852713178294573, -0.10077519379844961, -0.09302325581395349, -0.08527131782945736, -0.07751937984496124, -0.06976744186046512, -0.06201550387596899, -0.05426356589147287, -0.046511627906976744, -0.03875968992248062, -0.031007751937984496, -0.023255813953488372, -0.015503875968992248, -0.007751937984496124, -0), .UNSPECIFIED.);
|
||||||
#566 = DIRECTION('NONE', (-0.000000000000014210854715201953, -0.0000000000000035527136788004883, -1));
|
#566 = DIRECTION('NONE', (-0.000000000000014210854715201953, -0.0000000000000035527136788004883, -1));
|
||||||
#567 = DIRECTION('NONE', (-0.342019894888923, 0.9396927112094519, 0.0000000000000015219358869921909));
|
#567 = DIRECTION('NONE', (-0.342019894888923, 0.9396927112094519, 0.0000000000000015219358869921909));
|
||||||
#568 = CARTESIAN_POINT('NONE', (0.17774402212038112, 0.0964132158544042, 0.00000000000000002009718347115226));
|
#568 = CARTESIAN_POINT('NONE', (0.17774402212038112, 0.0964132158544042, 0.00000000000000002009718347115226));
|
||||||
|
BIN
rust/kcl-lib/tests/outputs/serial_test_example_rotate4.png
Normal file
After Width: | Height: | Size: 85 KiB |
BIN
rust/kcl-lib/tests/outputs/serial_test_example_translate3.png
Normal file
After Width: | Height: | Size: 82 KiB |
BIN
rust/kcl-lib/tests/outputs/serial_test_example_translate4.png
Normal file
After Width: | Height: | Size: 85 KiB |