More types stuff (#5901)
* parse union and fancy array types Signed-off-by: Nick Cameron <nrc@ncameron.org> * type aliases Signed-off-by: Nick Cameron <nrc@ncameron.org> * Treat Helix and Face as primitive types Signed-off-by: Nick Cameron <nrc@ncameron.org> * code motion: factor our execution::types module Signed-off-by: Nick Cameron <nrc@ncameron.org> * Tests for type coercion and subtyping Signed-off-by: Nick Cameron <nrc@ncameron.org> * Add Point2D/3D to std Signed-off-by: Nick Cameron <nrc@ncameron.org> * Rebasing and fixes Signed-off-by: Nick Cameron <nrc@ncameron.org> --------- Signed-off-by: Nick Cameron <nrc@ncameron.org>
This commit is contained in:
		@ -22,8 +22,12 @@ layout: manual
 | 
			
		||||
  * [`string`](kcl/types/string)
 | 
			
		||||
  * [`tag`](kcl/types/tag)
 | 
			
		||||
* **std**
 | 
			
		||||
  * [`Face`](kcl/types/Face)
 | 
			
		||||
  * [`HALF_TURN`](kcl/consts/std-HALF_TURN)
 | 
			
		||||
  * [`Helix`](kcl/types/Helix)
 | 
			
		||||
  * [`Plane`](kcl/types/Plane)
 | 
			
		||||
  * [`Point2d`](kcl/types/Point2d)
 | 
			
		||||
  * [`Point3d`](kcl/types/Point3d)
 | 
			
		||||
  * [`QUARTER_TURN`](kcl/consts/std-QUARTER_TURN)
 | 
			
		||||
  * [`Sketch`](kcl/types/Sketch)
 | 
			
		||||
  * [`Solid`](kcl/types/Solid)
 | 
			
		||||
 | 
			
		||||
@ -1,28 +1,12 @@
 | 
			
		||||
---
 | 
			
		||||
title: "Face"
 | 
			
		||||
title: "std::Face"
 | 
			
		||||
excerpt: "A face."
 | 
			
		||||
layout: manual
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
A face.
 | 
			
		||||
 | 
			
		||||
**Type:** `object`
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Properties
 | 
			
		||||
 | 
			
		||||
| Property | Type | Description | Required |
 | 
			
		||||
|----------|------|-------------|----------|
 | 
			
		||||
| `id` |[`string`](/docs/kcl/types/string)| The id of the face. | No |
 | 
			
		||||
| `artifactId` |[`ArtifactId`](/docs/kcl/types/ArtifactId)| The artifact ID. | No |
 | 
			
		||||
| `value` |[`string`](/docs/kcl/types/string)| The tag of the face. | No |
 | 
			
		||||
| `xAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the face's X axis be? | No |
 | 
			
		||||
| `yAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the face's Y axis be? | No |
 | 
			
		||||
| `zAxis` |[`Point3d`](/docs/kcl/types/Point3d)| The z-axis (normal). | No |
 | 
			
		||||
| `solid` |[`Solid`](/docs/kcl/types/Solid)| The solid the face is on. | No |
 | 
			
		||||
| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,26 +1,12 @@
 | 
			
		||||
---
 | 
			
		||||
title: "Helix"
 | 
			
		||||
title: "std::Helix"
 | 
			
		||||
excerpt: "A helix."
 | 
			
		||||
layout: manual
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
A helix.
 | 
			
		||||
 | 
			
		||||
**Type:** `object`
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Properties
 | 
			
		||||
 | 
			
		||||
| Property | Type | Description | Required |
 | 
			
		||||
|----------|------|-------------|----------|
 | 
			
		||||
| `value` |[`string`](/docs/kcl/types/string)| The id of the helix. | No |
 | 
			
		||||
| `artifactId` |[`ArtifactId`](/docs/kcl/types/ArtifactId)| The artifact ID. | No |
 | 
			
		||||
| `revolutions` |[`number`](/docs/kcl/types/number)| Number of revolutions. | No |
 | 
			
		||||
| `angleStart` |[`number`](/docs/kcl/types/number)| Start angle (in degrees). | No |
 | 
			
		||||
| `ccw` |`boolean`| Is the helix rotation counter clockwise? | No |
 | 
			
		||||
| `units` |[`UnitLen`](/docs/kcl/types/UnitLen)| A unit of length. | No |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -188,7 +188,7 @@ Any KCL value.
 | 
			
		||||
| Property | Type | Description | Required |
 | 
			
		||||
|----------|------|-------------|----------|
 | 
			
		||||
| `type` |enum: [`Face`](/docs/kcl/types/Face)|  | No |
 | 
			
		||||
| `value` |[`Face`](/docs/kcl/types/Face)| A face. | No |
 | 
			
		||||
| `value` |[`Face`](/docs/kcl/types/Face)|  | No |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
----
 | 
			
		||||
@ -236,7 +236,7 @@ Any KCL value.
 | 
			
		||||
| Property | Type | Description | Required |
 | 
			
		||||
|----------|------|-------------|----------|
 | 
			
		||||
| `type` |enum: [`Helix`](/docs/kcl/types/Helix)|  | No |
 | 
			
		||||
| `value` |[`Helix`](/docs/kcl/types/Helix)| A helix. | No |
 | 
			
		||||
| `value` |[`Helix`](/docs/kcl/types/Helix)|  | No |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										17
									
								
								docs/kcl/types/Point2d.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								docs/kcl/types/Point2d.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,17 @@
 | 
			
		||||
---
 | 
			
		||||
title: "std::Point2d"
 | 
			
		||||
excerpt: "A point in two dimensional space."
 | 
			
		||||
layout: manual
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
A point in two dimensional space.
 | 
			
		||||
 | 
			
		||||
```kcl
 | 
			
		||||
type Point2d = [number; 2]
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
`Point2d` is an alias for a two-element array of [number](/docs/kcl/types/number)s. To write a value
 | 
			
		||||
with type `Point2d`, use an array, e.g., `[0, 0]` or `[5.0, 3.14]`.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,22 +1,17 @@
 | 
			
		||||
---
 | 
			
		||||
title: "Point3d"
 | 
			
		||||
excerpt: ""
 | 
			
		||||
title: "std::Point3d"
 | 
			
		||||
excerpt: "A point in three dimensional space."
 | 
			
		||||
layout: manual
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
A point in three dimensional space.
 | 
			
		||||
 | 
			
		||||
**Type:** `object`
 | 
			
		||||
```kcl
 | 
			
		||||
type Point3d = [number; 3]
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
`Point3d` is an alias for a three-element array of [number](/docs/kcl/types/number)s. To write a value
 | 
			
		||||
with type `Point3d`, use an array, e.g., `[0, 0, 0]` or `[5.0, 3.14, 6.8]`.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## Properties
 | 
			
		||||
 | 
			
		||||
| Property | Type | Description | Required |
 | 
			
		||||
|----------|------|-------------|----------|
 | 
			
		||||
| `x` |[`number`](/docs/kcl/types/number)|  | No |
 | 
			
		||||
| `y` |[`number`](/docs/kcl/types/number)|  | No |
 | 
			
		||||
| `z` |[`number`](/docs/kcl/types/number)|  | No |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,6 @@ A path to sweep along.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
----
 | 
			
		||||
A helix.
 | 
			
		||||
 | 
			
		||||
[`Helix`](/docs/kcl/types/Helix)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user