Small Curve intersections that cause problems when extruding

Hello guys I’m back with a problem…

As you can see i have this small lines show up because I am using a transported file from another program.

Right now i can identify them and delete one by one, or I have a GP line that helps me identify and eliminate this intersections.
It works amazing when the lines are small, but when I have a more complex line with for example 1000+ intersections it normally doesn’t work and i can’t find the problem… so i just have to delete them by hand wish is very time consuming…

So all of that to ask if anyone had this problem before and if for any reason you have a way to solve this issue?

Thank you!!

Hi Ema - if the correct curves are closed, you can try CurveBoolean to clean up. Otherwise please post a file with some of these curves.


I tried it but it stays thinking for hours and does absolutely nothing … :c

Can you share the file so we can take a look?

Here you have 2/3 curve examples.
The top two are the same but the orange one as the problem “solved” but she still has an error of some kind because she creates those weird transparent surfaces…
Example of curve intersections.3dm (3.0 MB)

Thanks, I’m seeing the same hang as you. I opened an issue here.

Well thank you, so that means i have no other way to go around this problem?

Hi Ema - try SimplifyCrv on one of the curves, then CurveBoolean and click outside, away from the curve to set the region - this will find the outer perimeter. This seems to work OK here - it takes a little while to process but I think it does what you need… any luck?


Just wanted to let this ones here too when the simplify doesn’t work what i do instead is (wish can sometimes change the curve a little) is the rebuild but with the same numbers…

And most of the time it fixes the problem of the transparent surface. But the stray curve intersections stay…

And the CurveBoolean after the simplify sometimes work but other times it just stays there loading forever… But i can add it to my problem solvers list, sometimes it can work.

Thank you for the help guys!

Another workflow:

  1. _Explode the curves

  2. Find and remove duplicates
    _SelDup and _Delete

  3. Join the curves via chain
    _Join _Chain with ChainContinuity=Position, Direction=Forward (or Backward)
    Pick a curve, then follow the selection, choosing target best path at each choice.

  4. Find places where curve intersects itself.
    If found, _Trim and _Join to remove the intersections.

Hello again sorry for the long time, and thank you for taking the time to help me.

I followed this instructions but i don’t know if I’m doing the chain correctly because they don’t stay together as a closed curve, they stay as tiny open curves. And when i get to the 4. step the trim and join are very time consuming.

I tried to optimize this process (step 4) with Grasshopper but sometimes it only selects the small bits that intersect and not the full big curve. So i end up doing it all one by one again.

Could anyone help me figure out a grasshopper file to try and clean this? or is it even possible? I’m fairly new to grasshopper.

You still have one self-intersection in the curve, at this point:

_IntersectSelf enumerates this in the Command panel and marks it with a curve - the help documentation for the command only mentions a point, which is a little confusing (fyi @Joshua_Kennedy, in R8.9).

But once it is cleaned up you can get a normal surface:

1 Like

For your second shape, I shattered the curve (giving 1705 segments). I created a new layer for the next steps.
I selected all the segments and ran CurveBoolean, clicking outside the perimeter, here:

and inside the inner block, here:

This gave me a new curve with one remaining self-intersection, here:

I added a couple of diagonals and used them to trim out the intersection before joining them to the remaining new curves to complete the figure (I have no way of knowing if that is an acceptable treatment, of course):

There are some other loops that may need to be incorporated too.
This took no more than ten minutes and permits a clean surface:


1 Like

Thank you Jeremy, i see what you’re doing and i have used this method before.

The trimming manually is juts unsustainable in terms of work flow, this is one in like 100 lines and was one of the “easier” ones. And some weeks i get several drawings like this a week so this takes a long time out of my job.

I just wanted to try and make this easier and faster as possible and thank you very mush to everyone that is helping me!

Also this CurveBoolean already helps clean smaller curves with less big intersection problems so that already a big help, thank you!

So now back to the drawing can you please explain to me how you found the point that was missing ? Is it because you’re using rhino 8 and I’m using Rhino 7?

I knew there was a point somewhere from the command line output, so I split the curve in two and ran _IntersectSelf on each part, discarding the part with no self-intersections. Split the other again and repeated until I had a small enough section to really zoom into the corners enough to spot it.

I got it just not the command line output, how do you do that?

When you run the command you should see a summary of the result in the command line.