kcl-stdfunctionspatternLinear3d

patternLinear3dFunction in std::solid

Repeat a 3-dimensional solid along a linear path, with a dynamic amount of distance between each repetition, some specified number of times.

patternLinear3d(
  @solids: [Solid; 1+],
  instances: number(_),
  distance: number(Length),
  axis: Axis3d | Point3d,
  useOriginal?: bool,
): [Solid; 1+]

Arguments

NameTypeDescriptionRequired
solids[Solid; 1+]The solid(s) to duplicate.Yes
instancesnumber(_)The number of total instances. Must be greater than or equal to 1. This includes the original entity. For example, if instances is 2, there will be two copies -- the original, and one new copy. If instances is 1, this has no effect.Yes
distancenumber(Length)Distance between each repetition. Also known as 'spacing'.Yes
axisAxis3d or Point3dThe axis of the pattern. A 3D vector.Yes
useOriginalboolIf the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid.No

Returns

[Solid; 1+]

Examples

// / Pattern using a named axis.


exampleSketch = startSketchOn(XZ)
  |> startProfile(at = [0, 0])
  |> line(end = [0, 2])
  |> line(end = [3, 1])
  |> line(end = [0, -4])
  |> close()

example = extrude(exampleSketch, length = 1)
  |> patternLinear3d(axis = X, instances = 7, distance = 6)

Rendered example of patternLinear3d 0

// / Pattern using a raw axis.


exampleSketch = startSketchOn(XZ)
  |> startProfile(at = [0, 0])
  |> line(end = [0, 2])
  |> line(end = [3, 1])
  |> line(end = [0, -4])
  |> close()

example = extrude(exampleSketch, length = 1)
  |> patternLinear3d(axis = [1, 0, 1], instances = 7, distance = 6)

Rendered example of patternLinear3d 1

// Pattern a whole sketch on face.
size = 100
case = startSketchOn(XY)
  |> startProfile(at = [-size, -size])
  |> line(end = [2 * size, 0])
  |> line(end = [0, 2 * size])
  |> tangentialArc(endAbsolute = [-size, size])
  |> close(%)
  |> extrude(length = 65)

thing1 = startSketchOn(case, face = END)
  |> circle(center = [-size / 2, -size / 2], radius = 25)
  |> extrude(length = 50)

thing2 = startSketchOn(case, face = END)
  |> circle(center = [size / 2, -size / 2], radius = 25)
  |> extrude(length = 50)

  // We pass in the "case" here since we want to pattern the whole sketch.
// And the case was the base of the sketch.
patternLinear3d(
  case,
  axis = [1, 0, 0],
  distance = 250,
  instances = 2,
)

Rendered example of patternLinear3d 2

// Pattern an object on a face.
size = 100
case = startSketchOn(XY)
  |> startProfile(at = [-size, -size])
  |> line(end = [2 * size, 0])
  |> line(end = [0, 2 * size])
  |> tangentialArc(endAbsolute = [-size, size])
  |> close(%)
  |> extrude(length = 65)

thing1 = startSketchOn(case, face = END)
  |> circle(center = [-size / 2, -size / 2], radius = 25)
  |> extrude(length = 50)

// We pass in `thing1` here with `useOriginal` since we want to pattern just this object on the face.
patternLinear3d(
  thing1,
  axis = [1, 0, 0],
  distance = size,
  instances = 2,
  useOriginal = true,
)

Rendered example of patternLinear3d 3

Found a typo?