---
title: "chamfer"
excerpt: "Cut a straight transitional edge along a tagged path."
layout: manual
---

Cut a straight transitional edge along a tagged path.

Chamfer is similar in function and use to a fillet, except a fillet will blend the transition along an edge, rather than cut a sharp, straight transitional edge.

```js
chamfer(data: ChamferData, extrude_group: ExtrudeGroup, tag?: TagDeclarator) -> ExtrudeGroup
```

### Examples

```js
const width = 20
const length = 10
const thickness = 1
const chamferLength = 2

const mountingPlateSketch = startSketchOn("XY")
  |> startProfileAt([-width / 2, -length / 2], %)
  |> lineTo([width / 2, -length / 2], %, $edge1)
  |> lineTo([width / 2, length / 2], %, $edge2)
  |> lineTo([-width / 2, length / 2], %, $edge3)
  |> close(%, $edge4)

const mountingPlate = extrude(thickness, mountingPlateSketch)
  |> chamfer({
       length: chamferLength,
       tags: [
         getNextAdjacentEdge(edge1),
         getNextAdjacentEdge(edge2),
         getNextAdjacentEdge(edge3),
         getNextAdjacentEdge(edge4)
       ]
     }, %)
```

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

### Arguments

* `data`: `ChamferData` - Data for chamfers. (REQUIRED)
```js
{
	// The length of the chamfer.
	length: number,
	// The tags of the paths you want to chamfer.
	tags: [uuid |
{
	// Engine information for a tag.
	info: {
	// The id of the tagged object.
	id: uuid,
	// The path the tag is on.
	path: {
	// 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],
},
	// The sketch group the tag is on.
	sketchGroup: uuid,
	// The surface information for the tag.
	surface: {
	// 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",
},
},
	value: string,
}],
}
```
* `extrude_group`: `ExtrudeGroup` - An extrude group is a collection of extrude surfaces. (REQUIRED)
```js
{
	// 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: {
	// 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",
}],
},
	// 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",
}],
}
```
* `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

`ExtrudeGroup` - An extrude group is a collection of extrude surfaces.
```js
{
	// 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: {
	// 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",
}],
},
	// 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",
}],
}
```



