1
0
Fork 0
freesewing/markdown/dev/reference/api/path/clean/en.md
joostdecock fab1e2f877 feat(core): Added Path.clean() method. Closes #3038 and #3056
This is a fix for bug #3038 which was investigated by @BenJamesBen
who also proposed a fix in PR #3056

However, after discussing the matter, we agreed it would be better
to have a generic method in core to guard against the issue of
spurious drawing operations.

This commit adds the `Path.clean()` method that does exactly that,
as well as its documentation.
2022-12-03 17:28:05 +01:00

1.6 KiB

title
Path.clean()

The Path.clean() method removes spurious drawing operations from a path.

A spurious drawing operation is one that has no effect, but can still cause problems if left in place. For example, a line from a given point to the same given point will not cause any problems as such, but can trip up things like path offset and other methods. For this reason, such drawing operations can be cleaned up with the Path.clean() method.

As this method is called under the hood to guard against various scenarios where spurious segments could cause an issue, you should have no need to call this method yourself explicitly, but it's there if you need it. path that you pass it.

Signature

Path path.clean()

Example

```js ({ Point, points, Path, paths, snippets, Snippet, part }) => {

points.A = new Point(10, 10) points.B = new Point(10, 20) points.C = new Point(10, 30) points.D = new Point(90, 10) points.E = new Point(90, 20) points.F = new Point(90, 30)

paths.a = new Path() .move(points.A) .line(points.C) .line(points.B) .line(points.B) // spurious op .line(points.E) .line(points.F) .curve_(points.F, points.F) // another spurious op .line(points.D) .addClass('lining')

paths.b = paths.a .clone() .clean() .addClass('interfacing')

paths.a.addText(${paths.a.ops.length} ops in a, 'center fill-lining') paths.b.addText(${paths.b.ops.length} ops in b, 'center fill-note') .attr('data-text-dy', 7)

return part }

</Example>