2021-10-17 18:26:00 +02:00
---
title: trim()
---
2021-08-25 16:09:31 +02:00
```js
Path path.trim()
```
Returns a new Path that is this path with overlapping parts removed.
2022-08-20 18:07:26 -04:00
This method is typically used when [Path.offset() ](/reference/api/path/offset ) caused some overlap.
2021-08-25 16:09:31 +02:00
< Warning >
###### Use sparsely or performance will suffer
This method is recursive and complex, and the performance penalty for using
it on a long/complex path will be significant.
To limit the impact of path.trim(), follow this approach:
2022-02-20 14:44:38 +01:00
- construct a minimal path that contains the overlap
- trim it
- now join it to the rest of your path
2021-08-25 16:09:31 +02:00
2022-02-19 08:04:25 +01:00
You can see an example of this
2022-08-21 12:31:23 -04:00
[in the front part of the Bruce pattern ](https://github.com/freesewing/freesewing/blob/3ca5d0edfe54c7ac20aaf3af2f3544aee72f9b99/designs/bruce/src/front.js#L158 ).
2021-08-25 16:09:31 +02:00
< / Warning >
2022-01-19 11:31:39 +01:00
< Example part = "path_trim" >
Example of the Path.trim() method
< / Example >
2021-08-25 16:09:31 +02:00
```js
let { Point, points, Path, paths } = part.shorthand();
points.center = new Point(0, 0);
points.base = new Point(0, 10);
points.tip = new Point(0, 50);
points.tipCpRight = new Point(30, 50);
points.tipCpLeft = new Point(-30, 50);
paths.example = new Path().move(points.base);
for (let i = 0; i < 4 ; i + + ) {
points["base" + i] = points.base.rotate(60 * i, points.center);
points["tip" + i] = points.tip.rotate(60 * i, points.center);
points["tipCpRight" + i] = points.tipCpRight.rotate(60 * i, points.center);
points["tipCpLeft" + i] = points.tipCpLeft.rotate(60 * i, points.center);
if (i < 2 ) {
paths.example
.line(points["base" + i])
.curve(points["base" + i], points["tipCpLeft" + i], points["tip" + i])
.curve(
points["tipCpRight" + i],
points["base" + i],
points["base" + i]
);
} else {
paths.example
.line(points["base" + i])
.line(points["tip" + i])
.line(points["tipCpRight" + i])
.line(points["base" + i]);
}
}
paths.offset = paths.example
.offset(10)
.attr("class", "lining dotted stroke-sm");
paths.trimmed = paths.offset
.trim()
.attr("class", "various stroke-xl")
.attr("style", "stroke-opacity: 0.5;");
```