---
title: "startSketchOn"
excerpt: "Start a sketch on a specific plane or face."
layout: manual
---

Start a sketch on a specific plane or face.



```js
startSketchOn(data: SketchData, tag?: SketchOnFaceTag) -> SketchSurface
```

### Examples

```js
const exampleSketch = startSketchOn("XY")
  |> startProfileAt([0, 0], %)
  |> line([10, 0], %)
  |> line([0, 10], %)
  |> line([-10, 0], %)
  |> close(%)

const example = extrude(5, exampleSketch)

const exampleSketch002 = startSketchOn(example, 'end')
  |> startProfileAt([1, 1], %)
  |> line([8, 0], %)
  |> line([0, 8], %)
  |> line([-8, 0], %)
  |> close(%)

const example002 = extrude(5, exampleSketch002)

const exampleSketch003 = startSketchOn(example002, 'end')
  |> startProfileAt([2, 2], %)
  |> line([6, 0], %)
  |> line([0, 6], %)
  |> line([-6, 0], %)
  |> close(%)

const example003 = extrude(5, exampleSketch003)
```

![Rendered example of startSketchOn 0](data:image/png;base64,[encoded data, 183932 characters])

```js
const exampleSketch = startSketchOn("XY")
  |> startProfileAt([0, 0], %)
  |> line([10, 0], %)
  |> line([0, 10], %, 'sketchingFace')
  |> line([-10, 0], %)
  |> close(%)

const example = extrude(10, exampleSketch)

const exampleSketch002 = startSketchOn(example, 'sketchingFace')
  |> startProfileAt([1, 1], %)
  |> line([8, 0], %)
  |> line([0, 8], %)
  |> line([-8, 0], %)
  |> close(%, 'sketchingFace002')

const example002 = extrude(10, exampleSketch002)

const exampleSketch003 = startSketchOn(example002, 'sketchingFace002')
  |> startProfileAt([-8, 12], %)
  |> line([0, 6], %)
  |> line([6, 0], %)
  |> line([0, -6], %)
  |> close(%)

const example003 = extrude(5, exampleSketch003)
```

![Rendered example of startSketchOn 1](data:image/png;base64,[encoded data, 159684 characters])

```js
const exampleSketch = startSketchOn('XY')
  |> startProfileAt([4, 12], %)
  |> line([2, 0], %)
  |> line([0, -6], %)
  |> line([4, -6], %)
  |> line([0, -6], %)
  |> line([-3.75, -4.5], %)
  |> line([0, -5.5], %)
  |> line([-2, 0], %)
  |> close(%)

const example = revolve({ axis: 'y', angle: 180 }, exampleSketch)

const exampleSketch002 = startSketchOn(example, 'end')
  |> startProfileAt([4.5, -5], %)
  |> line([0, 5], %)
  |> line([5, 0], %)
  |> line([0, -5], %)
  |> close(%)

const example002 = extrude(5, exampleSketch002)
```

![Rendered example of startSketchOn 2](data:image/png;base64,[encoded data, 201112 characters])

```js
const a1 = startSketchOn({
       plane: {
         origin: { x: 0, y: 0, z: 0 },
         x_axis: { x: 1, y: 0, z: 0 },
         y_axis: { x: 0, y: 1, z: 0 },
         z_axis: { x: 0, y: 0, z: 1 }
       }
     })
  |> startProfileAt([0, 0], %)
  |> line([100.0, 0], %)
  |> yLine(-100.0, %)
  |> xLine(-100.0, %)
  |> yLine(100.0, %)
  |> close(%)
  |> extrude(3.14, %)
```

![Rendered example of startSketchOn 3](data:image/png;base64,[encoded data, 134916 characters])

### Arguments

* `data`: `SketchData` - Data for start sketch on. You can start a sketch on a plane or an extrude group. (REQUIRED)
```js
"XY" |
"-XY" |
"XZ" |
"-XZ" |
"YZ" |
"-YZ" |
{
	plane: {
	// Origin of the plane.
	origin: {
	x: number,
	y: number,
	z: number,
},
	// What should the plane’s X axis be?
	x_axis: {
	x: number,
	y: number,
	z: number,
},
	// What should the plane’s Y axis be?
	y_axis: {
	x: number,
	y: number,
	z: number,
},
	// The z-axis (normal).
	z_axis: {
	x: number,
	y: number,
	z: number,
},
},
} |
{
	// 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 position of the extrude group.
	position: [number, number, number],
	// The rotation of the extrude group.
	rotation: [number, number, number, number],
	// The sketch group paths.
	sketchGroupValues: [{
	// The from point.
	from: [number, number],
	// The name of the path.
	name: string,
	// The to point.
	to: [number, number],
	type: "ToPoint",
} |
{
	// arc's direction
	ccw: string,
	// the arc's center
	center: [number, number],
	// The from point.
	from: [number, number],
	// The name of the path.
	name: string,
	// The to point.
	to: [number, number],
	type: "TangentialArcTo",
} |
{
	// The from point.
	from: [number, number],
	// The name of the path.
	name: string,
	// The to point.
	to: [number, number],
	type: "TangentialArc",
} |
{
	// The from point.
	from: [number, number],
	// The name of the path.
	name: string,
	// The to point.
	to: [number, number],
	type: "Horizontal",
	// The x coordinate.
	x: number,
} |
{
	// The from point.
	from: [number, number],
	// The name of the path.
	name: 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 name of the path.
	name: 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 name.
	name: string,
	// The position.
	position: [number, number, number],
	// The rotation.
	rotation: [number, number, number, number],
	// The source range.
	sourceRange: [number, number],
	type: "extrudePlane",
} |
{
	// The face id for the extrude plane.
	faceId: uuid,
	// The id of the geometry.
	id: uuid,
	// The name.
	name: string,
	// The position.
	position: [number, number, number],
	// The rotation.
	rotation: [number, number, number, number],
	// The source range.
	sourceRange: [number, number],
	type: "extrudeArc",
}],
	// The x-axis of the extrude group base plane in the 3D space
	xAxis: {
	x: number,
	y: number,
	z: number,
},
	// The y-axis of the extrude group base plane in the 3D space
	yAxis: {
	x: number,
	y: number,
	z: number,
},
	// The z-axis of the extrude group base plane in the 3D space
	zAxis: {
	x: number,
	y: number,
	z: number,
},
}
```
* `tag`: `SketchOnFaceTag` - A tag for sketch on face. (OPTIONAL)
```js
"start" | "end" |
string
```

### Returns

`SketchSurface` - A sketch group type.
```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 face id the sketch is on
	faceId: uuid,
	// The id of the face.
	id: uuid,
	// The original sketch group id of the object we are sketching on.
	sketchGroupId: 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,
},
}
```



