---
title: "patternCircular3d"
subtitle: "Function in std::solid"
excerpt: "Repeat a 3-dimensional solid some number of times along a partial or complete circle some specified number of times. Each object may additionally be rotated along the circle, ensuring orientation of the solid with respect to the center of the circle is maintained."
layout: manual
---

Repeat a 3-dimensional solid some number of times along a partial or complete circle some specified number of times. Each object may additionally be rotated along the circle, ensuring orientation of the solid with respect to the center of the circle is maintained.

```kcl
patternCircular3d(
  @solids: [Solid],
  instances: number,
  axis: [number],
  center: Point3d,
  arcDegrees?: number,
  rotateDuplicates?: bool,
  useOriginal?: bool,
): [Solid]
```



### Arguments

| Name | Type | Description | Required |
|----------|------|-------------|----------|
| `solids` | [`[Solid]`](/docs/kcl-std/types/std-types-Solid) | Which solid(s) to pattern | Yes |
| `instances` | [`number`](/docs/kcl-std/types/std-types-number) | 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 |
| `axis` | [`[number]`](/docs/kcl-std/types/std-types-number) | The axis around which to make the pattern. This is a 3D vector | Yes |
| `center` | [`Point3d`](/docs/kcl-std/types/std-types-Point3d) | The center about which to make the pattern. This is a 3D vector. | Yes |
| `arcDegrees` | [`number`](/docs/kcl-std/types/std-types-number) | The arc angle (in degrees) to place the repetitions. Must be greater than 0. Defaults to 360. | No |
| `rotateDuplicates` | [`bool`](/docs/kcl-std/types/std-types-bool) | Whether or not to rotate the duplicates as they are copied. Defaults to true. | No |
| `useOriginal` | [`bool`](/docs/kcl-std/types/std-types-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]`](/docs/kcl-std/types/std-types-Solid)


### Examples

```kcl
// / Pattern using a named axis.


exampleSketch = startSketchOn(XZ)
  |> circle(center = [0, 0], radius = 1)

example = extrude(exampleSketch, length = -5)
  |> patternCircular3d(
       axis = X,
       center = [10, -20, 0],
       instances = 11,
       arcDegrees = 360,
       rotateDuplicates = true,
     )
```

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

```kcl
// / Pattern using a raw axis.


exampleSketch = startSketchOn(XZ)
  |> circle(center = [0, 0], radius = 1)

example = extrude(exampleSketch, length = -5)
  |> patternCircular3d(
       axis = [1, -1, 0],
       center = [10, -20, 0],
       instances = 11,
       arcDegrees = 360,
       rotateDuplicates = true,
     )
```

![Rendered example of patternCircular3d 1](data:image/png;base64,[encoded data, 138308 characters])


