Files
modeling-app/docs/kcl/patternLinear3d.md
Jess Frazelle 343f6572a2 circle moved to kw args (#5560)
* rust side of circle args

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* change circle in all test js files

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* more js side

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fix

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fixes

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* fix

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* ud[ates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* ud[ates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* A snapshot a day keeps the bugs away! 📷🐛 (OS: namespace-profile-ubuntu-8-cores)

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-02-28 20:40:01 -05:00

214 KiB

title, excerpt, layout
title excerpt layout
patternLinear3d Repeat a 3-dimensional solid along a linear path, with a dynamic amount manual

Repeat a 3-dimensional solid along a linear path, with a dynamic amount

of distance between each repetition, some specified number of times.

///

patternLinear3d(
  solidSet: SolidSet,
  instances: integer,
  distance: number,
  axis: [number],
  useOriginal?: bool,
) -> [Solid]

Arguments

Name Type Description Required
solidSet SolidSet The solid(s) to duplicate Yes
instances integer 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
distance number Distance between each repetition. Also known as 'spacing'. Yes
axis [number] The axis of the pattern. A 2D vector. Yes
useOriginal bool If the target was sketched on an extrusion, setting this will use the original sketch as the target, not the entire joined solid. Defaults to false. No

Returns

[Solid]

Examples

exampleSketch = startSketchOn('XZ')
  |> startProfileAt([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 0

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

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

thing2 = startSketchOn(case, '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 1

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

thing1 = startSketchOn(case, '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 2