Hi everyone,

I have a lot of curves that need optimization and manual process would take too long. Can anyone advise on how to approach the idea below? Any ideas would be greatly appreciated!

- I would like to make a script that redraws a curve into arcs&lines (or polyarcs) without any kinks, while trying to stay close to the shape of the original curve.
- Additionally, it would be great if there is a way to make a parameter that would balance the # of curves-VS- staying close to the original curve. Example of such parameter:

- value 1 = optimized curve almost identical, but consists of 200 arcs&lines
- value of 0.2 = optimized curve diverts from the shape, but consists of only 10 arcs&lines

Here is an example of a curve to optimize:

And example of optimized curve:

3D file of the screenshots above:

Curve for cleanup.3dm (96.1 KB)

Here’s my best attempt so far, not quite what I’m looking for yet:

GH definition:

Curves.gh (14.8 KB)

That’s rather hard without code. If you are familiar with C# (level required: mid to advanced) I could provide some hints on that matter (but not the solution: strictly internal stuff).

On the other hand … If I remember correctly someone has posted a solution some time ago … but I can’t recall any detail.

1 Like

Thanks for replying Pfotiad0! Unfortunately, I’m not that skilled with C#.

If you can think of a high level approach/tips that would help as well.

This definition is using a python script I found in the forum but I lost track where.

The input curve is internalised and I filleted all kinks and rebuilt the curve.

The result consists of arcs only.

curve_to_arcs_and_lines_python.gh (23.3 KB)

2 Likes

This is awesome, thank you!

To take it further, any ideas on how one might decrease the number of arcs that are similar radii?

for example:

Anders, thanks for your reply!

I was just in a process of adding onto Martin’s definition:

- dividing the curve at the inflections points (pink)
- add the points located next to small radii (yellow)
- and then somehow group the radii in between the points (yellow and pink) and rebuild the curve.

I got to about half of the definition, not sure about step 3 yet, but it seems like it could work …?

I’m going to check out what you sent, it would be great if I could have lines as well