kcl

shell

Shell a solid.

shell(data: ShellData, extrude_group: ExtrudeGroup) -> ExtrudeGroup

Examples

const firstSketch = startSketchOn('XY')
  |> startProfileAt([-12, 12], %)
  |> line([24, 0], %)
  |> line([0, -24], %)
  |> line([-24, 0], %)
  |> close(%)
  |> extrude(6, %)

// Remove the end face for the extrusion.
shell({ faces: ['end'], thickness: 0.25 }, firstSketch)

Rendered example of shell 0

Arguments

  • data: ShellData - Data for shells. (REQUIRED)
{
	// The faces you want removed.
	faces: ["start" | "end" |
{
	value: string,
}],
	// The thickness of the shell.
	thickness: number,
}
  • extrude_group: ExtrudeGroup - An extrude group is a collection of extrude surfaces. (REQUIRED)
{
	// The id of the extrusion end cap
	endCapId: uuid,
	// Chamfers or fillets on this extrude group.
	filletOrChamfers: [{
	// The engine id of the edge to fillet.
	edge_id: uuid,
	// The id of the engine command that called this fillet.
	id: uuid,
	radius: number,
	type: "fillet",
} |
{
	// The engine id of the edge to chamfer.
	edge_id: 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 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.
	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: {
	// The id of the extrusion end cap
	endCapId: uuid,
	// Chamfers or fillets on this extrude group.
	filletOrChamfers: [{
	// The engine id of the edge to fillet.
	edge_id: uuid,
	// The id of the engine command that called this fillet.
	id: uuid,
	radius: number,
	type: "fillet",
} |
{
	// The engine id of the edge to chamfer.
	edge_id: 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 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 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: string,
	// 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",
} |
{
	// 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",
}],
}

Returns

ExtrudeGroup - An extrude group is a collection of extrude surfaces.

{
	// The id of the extrusion end cap
	endCapId: uuid,
	// Chamfers or fillets on this extrude group.
	filletOrChamfers: [{
	// The engine id of the edge to fillet.
	edge_id: uuid,
	// The id of the engine command that called this fillet.
	id: uuid,
	radius: number,
	type: "fillet",
} |
{
	// The engine id of the edge to chamfer.
	edge_id: 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 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.
	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: {
	// The id of the extrusion end cap
	endCapId: uuid,
	// Chamfers or fillets on this extrude group.
	filletOrChamfers: [{
	// The engine id of the edge to fillet.
	edge_id: uuid,
	// The id of the engine command that called this fillet.
	id: uuid,
	radius: number,
	type: "fillet",
} |
{
	// The engine id of the edge to chamfer.
	edge_id: 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 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 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: string,
	// 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",
} |
{
	// 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",
}],
}