Wish: Curve Booleans Improvements

I use curve booleans quite often and it’s a very useful tool, when it works properly.

There are occasions when it doesn’t work, usually when there are small gaps not properly enclosing spaces. Also when curves are not planar, or are on different planes.

I believe this tool could be made more powerful and easier to use, by adding a couple of extra options to the command line:

  1. Close gaps: Identify a number to use as the ‘Maximum Gap’ if there is a gap smaller than this number it will automatically be closed and counted as a separate region.

  2. Project to cplane: Although this can be done prior to the curve boolean command it would streamline things a little more to include it in the command.

Any chance that these can be implemented?

closecrv works on multiple curves, feasibly you could select all and run closecrv, and it would close up all open curves.

you also can select all and scale them in the z with gumball to zero which will flatten them.

it’s possible you could script all this and add it to an alias-

@pascal may be able to assemble that…

I guess the request is more open-ended so to speak, than closing curves - my guess of the moment is that what is being requested is more like a chaining of curves that do not quite chain up, @Ben_B is that correct? Like, figure out what should happen here:


?
That is harder…
-Pascal

Hi Pascal - yes that’s exactly right (and I see what you did there :slight_smile: )

Microstation has a similar functionality, which is where I got the idea from. I’ve used it quite a bit over the years. However I’ve just done a little more testing with it and it doesn’t actually work very well for examples like the one you’ve shown with lots of individual curves which don’t quite meet.

As you suggest, a human brain can see quite easily what should be done - and a combination of trim/extend and chamfer would solve the problem. the question is whether this can be automated under the hood as part of the curve boolean tool.

I thought that this might be an easy win, but it seems perhaps there is a lot more to it than I initially thought! I know you guys have a million other more urgent things to fix, so maybe this is unrealistic, but I think these would improve the tool dramatically if you ever get the chance to work on it.

meanwhile / workarround:
check the commands
_connect
_extend

Thanks Tom! I never knew about connect - I have always used chamfer with 0 distances which I guess does the same thing.

The thing is if you manually have to use these tools to clean up linework (which I currently do) prior to using curve booleans, it loses some of the speed and efficiency which is what this tool is there for in the first place. I was just hoping for a way where the cleanup is automated under the hood of curve booleans.

with a small script you can extend all open curves on both side by for example 3 mm
https://developer.rhino3d.com/api/RhinoScriptSyntax/#curve-ExtendCurveLength
then run curveBoolean
?

1 Like

Very interesting, thanks for the link - yes this is definitely something that could help to streamline things!

Hi Ben - the problem to solve, I guess, at least the one that strikes me as hard, is reliably getting the right answer in ambiguous cases that are nonetheless obvious to humans - especially where the difference is small:

-Pascal