* Automatic fixing of deprecations and use non-quoted default planes by default Signed-off-by: Nick Cameron <nrc@ncameron.org> * A snapshot a day keeps the bugs away! 📷🐛 * A snapshot a day keeps the bugs away! 📷🐛 * A snapshot a day keeps the bugs away! 📷🐛 * A snapshot a day keeps the bugs away! 📷🐛 * A snapshot a day keeps the bugs away! 📷🐛 --------- Signed-off-by: Nick Cameron <nrc@ncameron.org> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
		
			
				
	
	
		
			122 lines
		
	
	
		
			498 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			498 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
title: "loft"
 | 
						|
excerpt: "Create a 3D surface or solid by interpolating between two or more sketches."
 | 
						|
layout: manual
 | 
						|
---
 | 
						|
 | 
						|
Create a 3D surface or solid by interpolating between two or more sketches.
 | 
						|
 | 
						|
The sketches need to closed and on the same plane.
 | 
						|
 | 
						|
```js
 | 
						|
loft(
 | 
						|
  sketches: [Sketch],
 | 
						|
  vDegree: NonZeroU32,
 | 
						|
  bezApproximateRational: bool,
 | 
						|
  baseCurveIndex?: integer,
 | 
						|
  tolerance?: number,
 | 
						|
  tagStart?: TagDeclarator,
 | 
						|
  tagEnd?: TagDeclarator,
 | 
						|
): Solid
 | 
						|
```
 | 
						|
 | 
						|
 | 
						|
### Arguments
 | 
						|
 | 
						|
| Name | Type | Description | Required |
 | 
						|
|----------|------|-------------|----------|
 | 
						|
| `sketches` | [`[Sketch]`](/docs/kcl/types/Sketch) | Which sketches to loft. Must include at least 2 sketches. | Yes |
 | 
						|
| `vDegree` | `NonZeroU32` | Degree of the interpolation. Must be greater than zero. For example, use 2 for quadratic, or 3 for cubic interpolation in the V direction. This defaults to 2, if not specified. | Yes |
 | 
						|
| `bezApproximateRational` | [`bool`](/docs/kcl/types/bool) | Attempt to approximate rational curves (such as arcs) using a bezier. This will remove banding around interpolations between arcs and non-arcs. It may produce errors in other scenarios Over time, this field won't be necessary. | Yes |
 | 
						|
| `baseCurveIndex` | `integer` | This can be set to override the automatically determined topological base curve, which is usually the first section encountered. | No |
 | 
						|
| `tolerance` | [`number`](/docs/kcl/types/number) | Tolerance for the loft operation. | No |
 | 
						|
| `tagStart` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | A named tag for the face at the start of the loft, i.e. the original sketch | No |
 | 
						|
| `tagEnd` | [`TagDeclarator`](/docs/kcl/types#tag-declaration) | A named tag for the face at the end of the loft, i.e. the last sketch | No |
 | 
						|
 | 
						|
### Returns
 | 
						|
 | 
						|
[`Solid`](/docs/kcl/types/Solid)
 | 
						|
 | 
						|
 | 
						|
### Examples
 | 
						|
 | 
						|
```js
 | 
						|
// Loft a square and a triangle.
 | 
						|
squareSketch = startSketchOn(XY)
 | 
						|
  |> startProfileAt([-100, 200], %)
 | 
						|
  |> line(end = [200, 0])
 | 
						|
  |> line(end = [0, -200])
 | 
						|
  |> line(end = [-200, 0])
 | 
						|
  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
 | 
						|
  |> close()
 | 
						|
 | 
						|
triangleSketch = startSketchOn(offsetPlane(XY, offset = 75))
 | 
						|
  |> startProfileAt([0, 125], %)
 | 
						|
  |> line(end = [-15, -30])
 | 
						|
  |> line(end = [30, 0])
 | 
						|
  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
 | 
						|
  |> close()
 | 
						|
 | 
						|
loft([squareSketch, triangleSketch])
 | 
						|
```
 | 
						|
 | 
						|

 | 
						|
 | 
						|
```js
 | 
						|
// Loft a square, a circle, and another circle.
 | 
						|
squareSketch = startSketchOn(XY)
 | 
						|
  |> startProfileAt([-100, 200], %)
 | 
						|
  |> line(end = [200, 0])
 | 
						|
  |> line(end = [0, -200])
 | 
						|
  |> line(end = [-200, 0])
 | 
						|
  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
 | 
						|
  |> close()
 | 
						|
 | 
						|
circleSketch0 = startSketchOn(offsetPlane(XY, offset = 75))
 | 
						|
  |> circle(center = [0, 100], radius = 50)
 | 
						|
 | 
						|
circleSketch1 = startSketchOn(offsetPlane(XY, offset = 150))
 | 
						|
  |> circle(center = [0, 100], radius = 20)
 | 
						|
 | 
						|
loft([
 | 
						|
  squareSketch,
 | 
						|
  circleSketch0,
 | 
						|
  circleSketch1
 | 
						|
])
 | 
						|
```
 | 
						|
 | 
						|

 | 
						|
 | 
						|
```js
 | 
						|
// Loft a square, a circle, and another circle with options.
 | 
						|
squareSketch = startSketchOn(XY)
 | 
						|
  |> startProfileAt([-100, 200], %)
 | 
						|
  |> line(end = [200, 0])
 | 
						|
  |> line(end = [0, -200])
 | 
						|
  |> line(end = [-200, 0])
 | 
						|
  |> line(endAbsolute = [profileStartX(%), profileStartY(%)])
 | 
						|
  |> close()
 | 
						|
 | 
						|
circleSketch0 = startSketchOn(offsetPlane(XY, offset = 75))
 | 
						|
  |> circle(center = [0, 100], radius = 50)
 | 
						|
 | 
						|
circleSketch1 = startSketchOn(offsetPlane(XY, offset = 150))
 | 
						|
  |> circle(center = [0, 100], radius = 20)
 | 
						|
 | 
						|
loft(
 | 
						|
  [
 | 
						|
    squareSketch,
 | 
						|
    circleSketch0,
 | 
						|
    circleSketch1
 | 
						|
  ],
 | 
						|
  baseCurveIndex = 0,
 | 
						|
  bezApproximateRational = false,
 | 
						|
  tolerance = 0.000001,
 | 
						|
  vDegree = 2,
 | 
						|
)
 | 
						|
```
 | 
						|
 | 
						|

 | 
						|
 | 
						|
 |