* add unit functions Signed-off-by: Jess Frazelle <github@jessfraz.com> * add tests Signed-off-by: Jess Frazelle <github@jessfraz.com> * update docs 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! 📷🐛 (OS: windows-latest) * empty * A snapshot a day keeps the bugs away! 📷🐛 (OS: windows-latest) --------- Signed-off-by: Jess Frazelle <github@jessfraz.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
		
			
				
	
	
		
			1038 lines
		
	
	
		
			273 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			1038 lines
		
	
	
		
			273 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						||
title: "circle"
 | 
						||
excerpt: "Construct a 2-dimensional circle, of the specified radius, centered at"
 | 
						||
layout: manual
 | 
						||
---
 | 
						||
 | 
						||
Construct a 2-dimensional circle, of the specified radius, centered at
 | 
						||
 | 
						||
the provided (x, y) origin point.
 | 
						||
 | 
						||
```js
 | 
						||
circle(center: [number], radius: number, sketch_surface_or_group: SketchSurfaceOrGroup, tag?: TagDeclarator) -> SketchGroup
 | 
						||
```
 | 
						||
 | 
						||
### Examples
 | 
						||
 | 
						||
```js
 | 
						||
const exampleSketch = startSketchOn("-XZ")
 | 
						||
  |> circle([0, 0], 10, %)
 | 
						||
 | 
						||
const example = extrude(5, exampleSketch)
 | 
						||
```
 | 
						||
 | 
						||

 | 
						||
 | 
						||
```js
 | 
						||
const exampleSketch = startSketchOn("XZ")
 | 
						||
  |> startProfileAt([-15, 0], %)
 | 
						||
  |> line([30, 0], %)
 | 
						||
  |> line([0, 30], %)
 | 
						||
  |> line([-30, 0], %)
 | 
						||
  |> close(%)
 | 
						||
  |> hole(circle([0, 15], 5, %), %)
 | 
						||
 | 
						||
const example = extrude(5, exampleSketch)
 | 
						||
```
 | 
						||
 | 
						||

 | 
						||
 | 
						||
### Arguments
 | 
						||
 | 
						||
* `center`: `[number]` (REQUIRED)
 | 
						||
* `radius`: `number` (REQUIRED)
 | 
						||
* `sketch_surface_or_group`: `SketchSurfaceOrGroup` - A sketch surface or a sketch group. (REQUIRED)
 | 
						||
```js
 | 
						||
{
 | 
						||
	// The id of the plane.
 | 
						||
	id: uuid,
 | 
						||
	// Origin of the plane.
 | 
						||
	origin: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
	type: "plane",
 | 
						||
	// Type for a plane.
 | 
						||
	value: "XY" | "XZ" | "YZ" | "Custom",
 | 
						||
	// What should the plane’s X axis be?
 | 
						||
	xAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
	// What should the plane’s Y axis be?
 | 
						||
	yAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
	// The z-axis (normal).
 | 
						||
	zAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The extrude group the face is on.
 | 
						||
	extrudeGroup: {
 | 
						||
	// Chamfers or fillets on this extrude group.
 | 
						||
	edgeCuts: [{
 | 
						||
	// The engine id of the edge to fillet.
 | 
						||
	edgeId: uuid,
 | 
						||
	// The id of the engine command that called this fillet.
 | 
						||
	id: uuid,
 | 
						||
	radius: number,
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "fillet",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The engine id of the edge to chamfer.
 | 
						||
	edgeId: uuid,
 | 
						||
	// The id of the engine command that called this chamfer.
 | 
						||
	id: uuid,
 | 
						||
	length: number,
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "chamfer",
 | 
						||
}],
 | 
						||
	// The id of the extrusion end cap
 | 
						||
	endCapId: uuid,
 | 
						||
	// The height of the extrude group.
 | 
						||
	height: number,
 | 
						||
	// The id of the extrude group.
 | 
						||
	id: uuid,
 | 
						||
	// The sketch group.
 | 
						||
	sketchGroup: {
 | 
						||
	// The id of the sketch group (this will change when the engine's reference to it changes.
 | 
						||
	id: uuid,
 | 
						||
	// What the sketch is on (can be a plane or a face).
 | 
						||
	on: SketchSurface,
 | 
						||
	// The starting path.
 | 
						||
	start: {
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
},
 | 
						||
	// Tag identifiers that have been declared in this sketch group.
 | 
						||
	tags: {
 | 
						||
},
 | 
						||
	// The paths in the sketch group.
 | 
						||
	value: [{
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "ToPoint",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// arc's direction
 | 
						||
	ccw: bool,
 | 
						||
	// the arc's center
 | 
						||
	center: [number, number],
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "TangentialArcTo",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// arc's direction
 | 
						||
	ccw: bool,
 | 
						||
	// the arc's center
 | 
						||
	center: [number, number],
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "TangentialArc",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "Horizontal",
 | 
						||
	// The x coordinate.
 | 
						||
	x: number,
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "AngledLineTo",
 | 
						||
	// The x coordinate.
 | 
						||
	x: number,
 | 
						||
	// The y coordinate.
 | 
						||
	y: number,
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "Base",
 | 
						||
}],
 | 
						||
},
 | 
						||
	// The id of the extrusion start cap
 | 
						||
	startCapId: uuid,
 | 
						||
	// The extrude surfaces.
 | 
						||
	value: [{
 | 
						||
	// The face id for the extrude plane.
 | 
						||
	faceId: uuid,
 | 
						||
	// The id of the geometry.
 | 
						||
	id: uuid,
 | 
						||
	// The source range.
 | 
						||
	sourceRange: [number, number],
 | 
						||
	// The tag.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "extrudePlane",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The face id for the extrude plane.
 | 
						||
	faceId: uuid,
 | 
						||
	// The id of the geometry.
 | 
						||
	id: uuid,
 | 
						||
	// The source range.
 | 
						||
	sourceRange: [number, number],
 | 
						||
	// The tag.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "extrudeArc",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The id for the chamfer surface.
 | 
						||
	faceId: uuid,
 | 
						||
	// The id of the geometry.
 | 
						||
	id: uuid,
 | 
						||
	// The source range.
 | 
						||
	sourceRange: [number, number],
 | 
						||
	// The tag.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "chamfer",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The id for the fillet surface.
 | 
						||
	faceId: uuid,
 | 
						||
	// The id of the geometry.
 | 
						||
	id: uuid,
 | 
						||
	// The source range.
 | 
						||
	sourceRange: [number, number],
 | 
						||
	// The tag.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "fillet",
 | 
						||
}],
 | 
						||
},
 | 
						||
	// The id of the face.
 | 
						||
	id: uuid,
 | 
						||
	type: "face",
 | 
						||
	// The tag of the face.
 | 
						||
	value: string,
 | 
						||
	// What should the face’s X axis be?
 | 
						||
	xAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
	// What should the face’s Y axis be?
 | 
						||
	yAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
	// The z-axis (normal).
 | 
						||
	zAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The id of the sketch group (this will change when the engine's reference to it changes.
 | 
						||
	id: uuid,
 | 
						||
	// What the sketch is on (can be a plane or a face).
 | 
						||
	on: {
 | 
						||
	// The id of the plane.
 | 
						||
	id: uuid,
 | 
						||
	// Origin of the plane.
 | 
						||
	origin: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
	type: "plane",
 | 
						||
	// Type for a plane.
 | 
						||
	value: "XY" | "XZ" | "YZ" | "Custom",
 | 
						||
	// What should the plane’s X axis be?
 | 
						||
	xAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
	// What should the plane’s Y axis be?
 | 
						||
	yAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
	// The z-axis (normal).
 | 
						||
	zAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The extrude group the face is on.
 | 
						||
	extrudeGroup: {
 | 
						||
	// Chamfers or fillets on this extrude group.
 | 
						||
	edgeCuts: [{
 | 
						||
	// The engine id of the edge to fillet.
 | 
						||
	edgeId: uuid,
 | 
						||
	// The id of the engine command that called this fillet.
 | 
						||
	id: uuid,
 | 
						||
	radius: number,
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "fillet",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The engine id of the edge to chamfer.
 | 
						||
	edgeId: uuid,
 | 
						||
	// The id of the engine command that called this chamfer.
 | 
						||
	id: uuid,
 | 
						||
	length: number,
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "chamfer",
 | 
						||
}],
 | 
						||
	// The id of the extrusion end cap
 | 
						||
	endCapId: uuid,
 | 
						||
	// The height of the extrude group.
 | 
						||
	height: number,
 | 
						||
	// The id of the extrude group.
 | 
						||
	id: uuid,
 | 
						||
	// The sketch group.
 | 
						||
	sketchGroup: SketchGroup,
 | 
						||
	// The id of the extrusion start cap
 | 
						||
	startCapId: uuid,
 | 
						||
	// The extrude surfaces.
 | 
						||
	value: [{
 | 
						||
	// The face id for the extrude plane.
 | 
						||
	faceId: uuid,
 | 
						||
	// The id of the geometry.
 | 
						||
	id: uuid,
 | 
						||
	// The source range.
 | 
						||
	sourceRange: [number, number],
 | 
						||
	// The tag.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "extrudePlane",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The face id for the extrude plane.
 | 
						||
	faceId: uuid,
 | 
						||
	// The id of the geometry.
 | 
						||
	id: uuid,
 | 
						||
	// The source range.
 | 
						||
	sourceRange: [number, number],
 | 
						||
	// The tag.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "extrudeArc",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The id for the chamfer surface.
 | 
						||
	faceId: uuid,
 | 
						||
	// The id of the geometry.
 | 
						||
	id: uuid,
 | 
						||
	// The source range.
 | 
						||
	sourceRange: [number, number],
 | 
						||
	// The tag.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "chamfer",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The id for the fillet surface.
 | 
						||
	faceId: uuid,
 | 
						||
	// The id of the geometry.
 | 
						||
	id: uuid,
 | 
						||
	// The source range.
 | 
						||
	sourceRange: [number, number],
 | 
						||
	// The tag.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "fillet",
 | 
						||
}],
 | 
						||
},
 | 
						||
	// The id of the face.
 | 
						||
	id: uuid,
 | 
						||
	type: "face",
 | 
						||
	// The tag of the face.
 | 
						||
	value: string,
 | 
						||
	// What should the face’s X axis be?
 | 
						||
	xAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
	// What should the face’s Y axis be?
 | 
						||
	yAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
	// The z-axis (normal).
 | 
						||
	zAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
},
 | 
						||
	// The starting path.
 | 
						||
	start: {
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
},
 | 
						||
	// Tag identifiers that have been declared in this sketch group.
 | 
						||
	tags: {
 | 
						||
},
 | 
						||
	// The paths in the sketch group.
 | 
						||
	value: [{
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "ToPoint",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// arc's direction
 | 
						||
	ccw: bool,
 | 
						||
	// the arc's center
 | 
						||
	center: [number, number],
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "TangentialArcTo",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// arc's direction
 | 
						||
	ccw: bool,
 | 
						||
	// the arc's center
 | 
						||
	center: [number, number],
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "TangentialArc",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "Horizontal",
 | 
						||
	// The x coordinate.
 | 
						||
	x: number,
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "AngledLineTo",
 | 
						||
	// The x coordinate.
 | 
						||
	x: number,
 | 
						||
	// The y coordinate.
 | 
						||
	y: number,
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "Base",
 | 
						||
}],
 | 
						||
}
 | 
						||
```
 | 
						||
* `tag`: `TagDeclarator` (OPTIONAL)
 | 
						||
```js
 | 
						||
{
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
}
 | 
						||
```
 | 
						||
 | 
						||
### Returns
 | 
						||
 | 
						||
`SketchGroup` - A sketch group is a collection of paths.
 | 
						||
```js
 | 
						||
{
 | 
						||
	// The id of the sketch group (this will change when the engine's reference to it changes.
 | 
						||
	id: uuid,
 | 
						||
	// What the sketch is on (can be a plane or a face).
 | 
						||
	on: {
 | 
						||
	// The id of the plane.
 | 
						||
	id: uuid,
 | 
						||
	// Origin of the plane.
 | 
						||
	origin: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
	type: "plane",
 | 
						||
	// Type for a plane.
 | 
						||
	value: "XY" | "XZ" | "YZ" | "Custom",
 | 
						||
	// What should the plane’s X axis be?
 | 
						||
	xAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
	// What should the plane’s Y axis be?
 | 
						||
	yAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
	// The z-axis (normal).
 | 
						||
	zAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The extrude group the face is on.
 | 
						||
	extrudeGroup: {
 | 
						||
	// Chamfers or fillets on this extrude group.
 | 
						||
	edgeCuts: [{
 | 
						||
	// The engine id of the edge to fillet.
 | 
						||
	edgeId: uuid,
 | 
						||
	// The id of the engine command that called this fillet.
 | 
						||
	id: uuid,
 | 
						||
	radius: number,
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "fillet",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The engine id of the edge to chamfer.
 | 
						||
	edgeId: uuid,
 | 
						||
	// The id of the engine command that called this chamfer.
 | 
						||
	id: uuid,
 | 
						||
	length: number,
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "chamfer",
 | 
						||
}],
 | 
						||
	// The id of the extrusion end cap
 | 
						||
	endCapId: uuid,
 | 
						||
	// The height of the extrude group.
 | 
						||
	height: number,
 | 
						||
	// The id of the extrude group.
 | 
						||
	id: uuid,
 | 
						||
	// The sketch group.
 | 
						||
	sketchGroup: {
 | 
						||
	// The id of the sketch group (this will change when the engine's reference to it changes.
 | 
						||
	id: uuid,
 | 
						||
	// What the sketch is on (can be a plane or a face).
 | 
						||
	on: SketchSurface,
 | 
						||
	// The starting path.
 | 
						||
	start: {
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
},
 | 
						||
	// Tag identifiers that have been declared in this sketch group.
 | 
						||
	tags: {
 | 
						||
},
 | 
						||
	// The paths in the sketch group.
 | 
						||
	value: [{
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "ToPoint",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// arc's direction
 | 
						||
	ccw: bool,
 | 
						||
	// the arc's center
 | 
						||
	center: [number, number],
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "TangentialArcTo",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// arc's direction
 | 
						||
	ccw: bool,
 | 
						||
	// the arc's center
 | 
						||
	center: [number, number],
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "TangentialArc",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "Horizontal",
 | 
						||
	// The x coordinate.
 | 
						||
	x: number,
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "AngledLineTo",
 | 
						||
	// The x coordinate.
 | 
						||
	x: number,
 | 
						||
	// The y coordinate.
 | 
						||
	y: number,
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "Base",
 | 
						||
}],
 | 
						||
},
 | 
						||
	// The id of the extrusion start cap
 | 
						||
	startCapId: uuid,
 | 
						||
	// The extrude surfaces.
 | 
						||
	value: [{
 | 
						||
	// The face id for the extrude plane.
 | 
						||
	faceId: uuid,
 | 
						||
	// The id of the geometry.
 | 
						||
	id: uuid,
 | 
						||
	// The source range.
 | 
						||
	sourceRange: [number, number],
 | 
						||
	// The tag.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "extrudePlane",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The face id for the extrude plane.
 | 
						||
	faceId: uuid,
 | 
						||
	// The id of the geometry.
 | 
						||
	id: uuid,
 | 
						||
	// The source range.
 | 
						||
	sourceRange: [number, number],
 | 
						||
	// The tag.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "extrudeArc",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The id for the chamfer surface.
 | 
						||
	faceId: uuid,
 | 
						||
	// The id of the geometry.
 | 
						||
	id: uuid,
 | 
						||
	// The source range.
 | 
						||
	sourceRange: [number, number],
 | 
						||
	// The tag.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "chamfer",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The id for the fillet surface.
 | 
						||
	faceId: uuid,
 | 
						||
	// The id of the geometry.
 | 
						||
	id: uuid,
 | 
						||
	// The source range.
 | 
						||
	sourceRange: [number, number],
 | 
						||
	// The tag.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	type: "fillet",
 | 
						||
}],
 | 
						||
},
 | 
						||
	// The id of the face.
 | 
						||
	id: uuid,
 | 
						||
	type: "face",
 | 
						||
	// The tag of the face.
 | 
						||
	value: string,
 | 
						||
	// What should the face’s X axis be?
 | 
						||
	xAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
	// What should the face’s Y axis be?
 | 
						||
	yAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
	// The z-axis (normal).
 | 
						||
	zAxis: {
 | 
						||
	x: number,
 | 
						||
	y: number,
 | 
						||
	z: number,
 | 
						||
},
 | 
						||
},
 | 
						||
	// The starting path.
 | 
						||
	start: {
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
},
 | 
						||
	// Tag identifiers that have been declared in this sketch group.
 | 
						||
	tags: {
 | 
						||
},
 | 
						||
	// The paths in the sketch group.
 | 
						||
	value: [{
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "ToPoint",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// arc's direction
 | 
						||
	ccw: bool,
 | 
						||
	// the arc's center
 | 
						||
	center: [number, number],
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "TangentialArcTo",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// arc's direction
 | 
						||
	ccw: bool,
 | 
						||
	// the arc's center
 | 
						||
	center: [number, number],
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "TangentialArc",
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "Horizontal",
 | 
						||
	// The x coordinate.
 | 
						||
	x: number,
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "AngledLineTo",
 | 
						||
	// The x coordinate.
 | 
						||
	x: number,
 | 
						||
	// The y coordinate.
 | 
						||
	y: number,
 | 
						||
} |
 | 
						||
{
 | 
						||
	// The from point.
 | 
						||
	from: [number, number],
 | 
						||
	// The tag of the path.
 | 
						||
	tag: {
 | 
						||
	digest: [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number],
 | 
						||
	end: number,
 | 
						||
	start: number,
 | 
						||
	value: string,
 | 
						||
},
 | 
						||
	// The to point.
 | 
						||
	to: [number, number],
 | 
						||
	type: "Base",
 | 
						||
}],
 | 
						||
}
 | 
						||
```
 | 
						||
 | 
						||
 | 
						||
 |