From edge bundling / wooly paths to surface between

Hello everyone,

I got a bunch of nurbs out of an edge bundling (every point connected with all other Points). Now I want the area between them. Michael Pryor told me that the best way is by splitting a surface with the curves. But yeah, splitting is slow and my computer is not able to calculate that with this amount of curves.

Is there a way to reduce the lines?
I also thought about makeing a really small metaball around them so I can split with fewer lines?

I just don’t know how to go on. I’m really at the end with my knowledge. I tried the whole day, different stuff, but didn’t found a solution. I splittet the area in 30 small parts etc, but that’s no solution I can work further on.

With less curves I culled the small surfaces, to get rid of the smaall pieces between the curves.

And this is what I think breaks my neck. The high amount of small pieces.

Btw I’m running Grasshopper on a Dell, 4xi7, 32Gb RAM, if somebody want to try it with a more powerfull computer.

I would be really thankfull, if someone has a solution.

Best regards,
Tim (3.5 MB)



1 Like

What did you end up doing?

Hi Michael,

I did more or less a "pixelation of the curves.

I created a grid of 80000 Points.

Divided the 300 curves

and moved the curve points to the nearest point of the grid. I get a few small spaces between, but not as much as with the nurbs and in 25 min my pc could calculate the surface split.

I ended up with this areas. Not really clean and true, and maybe nobody can need that, but for me it works and somehow I can work further on this.

The result will be more authentic with more points in the grid and divisions of the input curve, but this were the limits for my computer.

I hope I could help someone somehow.


Thanks for the tip and the good exercice. I took a look to this problem,
I used mesh instead of surface, so faces acts like pixels, I made a little C# in order to have the difference between two subsets. The list of face number (0 to n-1) and the list of faces intersecting the curves. All others component must be legacy Rhino.
It tooks
15 s with 32 000 points, length of 1
15 s with 120 000 points, length of 1
105 s with 962 000 points, length of 0.5

If you want to have a better representation of the patch, you can push their points to the curves around. (3.5 MB)


Oh wow, that’s awesome !

It’s so much faster as with surfaces. I wanted to try my way with different bundlings and already cried when i thought about the time I loose by waiting :smiley:

Thank you very much for sharing!

You are welcome, you had the idea of the algorithm.
Here a version which can handle automatically the scale of the input curves.
I let a factor z, which could be useful to put to 1 if curves are not enough divided.
Here 30 seconds, z factor to 1

Here 100 seconds, z factor of 3 (8.6 MB)


I can just repeat myself. Thank you very much. That’s a really big time saver.

That’s a natural beauty!

Nice stuff here @laurent_delrieu

Some nice work and results in, @laurent_delrieu laurent_delrieu - ‘SmoothPLine’ can be very effective! Surprised to see that the gradient was simple linear.

1 Like

@Michael_Pryor @Joseph_Oster thanks for the comments. It is always interesting to see that answering some questions allows to learn new techniques and to find new space partitioning.
So for everybody, if you want to learn help others.


Can‘t say it for sure, but looks like this stuff is still in use :slight_smile: nice to see

1 Like

I cant believe this was 2017 :upside_down_face: