# Customized Repeats 🔢, Copy and Paste into Glowforge 📋, Strandbeests in Cuttle 🎥

JUN 24, 2022

Here's the latest with [Cuttle](https://cuttle.xyz/).

-   Powerful new feature: Customized Repetitions
-   Copy and Paste into Glowforge
-   Paper Linkages Season Finale (Jansen’s Strandbeest mechanism)

## Customized Repetitions 🔢

Today we’re announcing a powerful new feature for working with repeated shapes in Cuttle.

![](https://content.cuttle.xyz/blog/customized-repeats-copy-and-paste-into-glowforge-strandbeests-in-cuttle/cb8481bf6f3ce435301dca9c707124bc3acb36b10ca33ec116cae8fd12a5668f.gif)

You may have used Cuttle’s built-in Repeat modifiers.

These let you take any shape and repeat it any number of times.

![](https://content.cuttle.xyz/blog/customized-repeats-copy-and-paste-into-glowforge-strandbeests-in-cuttle/8163d3cc5064df35b0b4a615961725bccc93ba957d5c8b68fdb2bc6c48e99ba9.gif)

But what if you need each repetition to be slightly different?

Maybe you’re making a ruler and you want each tick mark to be labeled with a different number…

![](https://cuttle-content.imgix.net/blog/customized-repeats-copy-and-paste-into-glowforge-strandbeests-in-cuttle/e335e3b20610d17a813d486368955579c99e9f53cfe945fe49f4e0757df5a343.png?auto=compress,format&q=60&fit=max&w=720&h=720&dpr=2)

Maybe you’re repeating rectangles and you need each one to be a different size…

![](https://cuttle-content.imgix.net/blog/customized-repeats-copy-and-paste-into-glowforge-strandbeests-in-cuttle/8d52708a1fb4d4083854a58e93d0f25b109e7a5a29f247dd1463111a45d1accf.png?auto=compress,format&q=60&fit=max&w=720&h=720&dpr=2)

Or maybe you want to use math expressions to precisely control the position and scale of repeated circles…

![](https://cuttle-content.imgix.net/blog/customized-repeats-copy-and-paste-into-glowforge-strandbeests-in-cuttle/b0f553f83ae0d55469db4e6085d5c92390054fcddf43e1d6de8faf9593ea6640.png?auto=compress,format&q=60&fit=max&w=720&h=720&dpr=2)

You could previously do this by writing your own custom modifier code.

Now you can do it without any custom code!

Let’s look at a simple example.

Here’s a Star where we’ve applied Linear Repeat. Notice each Star is exactly the same.

![](https://content.cuttle.xyz/blog/customized-repeats-copy-and-paste-into-glowforge-strandbeests-in-cuttle/8163d3cc5064df35b0b4a615961725bccc93ba957d5c8b68fdb2bc6c48e99ba9.gif)

Now we check “Customize Each Repetition”. This gives us a new variable, `rep`.

![](https://content.cuttle.xyz/blog/customized-repeats-copy-and-paste-into-glowforge-strandbeests-in-cuttle/f0067c268a5f9124bbd288449e3329e7765c6ab146014e6eadc486ab12ed11d9.gif)

`rep` starts at `0` and increments sequentially for each Star. Since there are 6 total repetitions, `rep` ranges from `0` to `5`.

![](https://cuttle-content.imgix.net/blog/customized-repeats-copy-and-paste-into-glowforge-strandbeests-in-cuttle/f70047fcbac7c58399a022e3fd2bf3e56d4bb5dc4ec1f9292988e4f37bba003c.png?auto=compress,format&q=60&fit=max&w=720&h=720&dpr=2)

We can then select the Star and change its `points` parameter to `5 + rep`.

![](https://content.cuttle.xyz/blog/customized-repeats-copy-and-paste-into-glowforge-strandbeests-in-cuttle/b2222e6db7ee5492ec71bef887880368cec238d63c1d25b789420dcaf909ad08.gif)

So we’re using `rep` to control the number of points on the Star.

![](https://cuttle-content.imgix.net/blog/customized-repeats-copy-and-paste-into-glowforge-strandbeests-in-cuttle/b2408b83060f3902a810730c98d927f210075f9e2f4b491bdfd45fb725a1ab3e.png?auto=compress,format&q=60&fit=max&w=720&h=720&dpr=2)

If you have programming experience, you can think of this as a “for loop”. `rep` is the “index” of repetition, conventionally called `i`.

You can use `rep` to control anything in the shapes you’re repeating. Below, a piece of text (“Spells”) is repeated in place and `rep` is used to adjust both the Expand `distance` and the Fill `color`.

![](https://cuttle-content.imgix.net/blog/customized-repeats-copy-and-paste-into-glowforge-strandbeests-in-cuttle/dfaed072f3ad5c5c716b3b35b2673a6a891ffe5202e938c363f2b6d22a4e7a9b.png?auto=compress,format&q=60&fit=max&w=720&h=720&dpr=2)

Check out [lots more examples](https://cuttle.xyz/@notlion/Customized-Repeat-Examples-ZL6lpqqaXYpv) or the [written documentation](https://cuttle.xyz/learn/repetitions/customized-repetitions).

If you have any questions, come chat with us on [our Discord](https://cuttle.xyz/discord)!

## Copy and Paste into Glowforge 📋

You can now copy from Cuttle (`cmd / ctrl` + `C`) and paste into Glowforge’s app (`cmd / ctrl` + `V`).

![](https://content.cuttle.xyz/blog/customized-repeats-copy-and-paste-into-glowforge-strandbeests-in-cuttle/0f91d1266b037d856a38fa6f95661788fe7be20976606be29a5ad732cbea0e51.gif)

This is great for quickly prototyping.

We worked with Glowforge to implement this and are thrilled that it’s now shipped!

## Paper Linkages Season Finale 🎥

Federico posted the [final episode in his series on paper linkages](https://www.instagram.com/p/CefYEBduJXc/). In this episode, he recreates the walking mechanism used in Theo Jansen’s amazing [Strandbeest mechanical creatures](https://www.strandbeest.com/).

![](https://content.cuttle.xyz/blog/customized-repeats-copy-and-paste-into-glowforge-strandbeests-in-cuttle/b9816c92f3b86c418c6c4920efc613c0eba490ac458aa4b08fede7122da154b7.gif)

This mechanism uses parts developed in previous episodes. He created struts of the appropriate length using Cuttle, then cut these parts from cardstock on a Cricut.

In case you missed it, check out [Cuttle’s Instagram account](https://www.instagram.com/cuttlexyz/) for the previous 5 episodes!

## Other Improvements and Fixes 🐞

-   Dragging beyond the bounds of the browser window (e.g. scrubbing a number) now behaves correctly.
-   Projects now open in new tabs so you never lose your place in the project dashboard or explore page.
-   Built-in components now scale to an appropriate size for the current canvas zoom level.
-   Fixed a bug where clicking (without dragging) a ruler would still create a guide.
-   The inspector now shows a warning if a parameter evaluates to an unexpected type (e.g. number vs boolean).
-   Scripting: Fixed a bug with `randomInt()` where it could return a VERY high number when called with no maximum value. It now returns zero if no maximum is specified.
-   Scripting: Exposed JavaScript `JSON.stringify()` and `JSON.parse()` functions.

![Small circular photo of Toby](https://cuttle.xyz/images/blog-authors/Toby.jpg)

Toby Schachman