---
title: pd
---

The `pd` macro adds a _path dimension_ to your pattern, indicating the length
of a path.

It is provided by [plugin-annotations](/reference/plugins/annotations), which is
part of [core-plugins](/reference/plugins/core) (so it is available by default).

## Signature

```js
macro('pd', {
  Number d,
  String id,
  Path path,
  Boolean noEndMarker,
  Boolean noStartMarker,
  String text,
  Boolean force = false,
})
```

## Example

<Example caption="An example of a path dimension with the pd macro">
```js
({ Point, Path, paths, macro, part }) => {

  paths.example = new Path()
    .move(new Point(0,0))
    .curve(new Point(20,10), new Point(60,10), new Point(80,0))

  macro('pd', {
    path: paths.example,
    d: 15,
    force: true,
  })

  return part
}
```
</Example>

## Configuration

| Property        | Default | Type                | Description |
|----------------:|---------|---------------------|-------------|
| `path`          |         | [Path](/reference/api/path)   | The path to draw the dimension along |
| `d`             | 10      | Number              | The offset at which to draw the dimension |
| `text`          | Path length | Number          | The text to go on the dimension if not the length of the path |
| `id`            | `pd` | `string` | The ID of this macro instance |
| `noStartMarker` | `false` | Boolean             | Whether to not draw a start marker |
| `noEndMarker`   | `false` | Boolean             | Whether to not draw an end marker |
| `force`      | `false`    | `boolean`  | Set this to `true` to display the macro output even when `paperless` is `false` |

## Notes

This macro takes the `paperless` setting into account and won't output anything when both `paperless` and `force` are `false`.

