How to union a series of planar surfaces into a single surface?

I have a network of planar surfaces
I would like to join all of them into a single planar surface:

Is it possible to do this with Rhino 5?

I tried running the BooleanUnion command, but it reported: Boolean union failed.

The surfaces indeed intersect between each other, but they are all planar and in the same plane, so I do not understand why I can’t union all of them into a single planar surface?

Thank you for the reply in advance !

Network.3dm (818.2 KB)

i’m no expert but if you first do SelDup you will see your model lights up,
delete the duplicates and then boolean union seems to work, albeit one by one…

I guess there is a place where the intersection is not complete, i didn’t do it all.
if so you’ll find it down the road.


1 Like

Thank you Akash,

After I ran the SelDup command, deleted the duplicates, selected all surfaces and then ran the BooleanUnion command, it still fails. It again reports: Boolean union failed.
I tried picking surfaces one by one, and still got the Boolean union failed message.
Maybe the order in which I pick the surfaces is important.

Still I can not believe that Rhino is not capable of merging a bunch of planar surfaces, all being in the same plane?

i narrowed it down to the problem areas,
with the intersection in orange
the black layer has the Srf that needs fixing.
maybe someone more knowledgeable would want to take it from here.
it’s very late in the night where i am.

some of these Srf do not fully intersect, other would join at double tolerance

If you simply remake these few Surfaces, i think you’d be ok.

NetworkWithIssues.3dm (3.8 MB)

Hi Didier - try:

Select all the surfaces and DupBorder
Hide or delete the surfaces.
Explode the curves, SelDup and delete.
CurveBoolean. Make your first click off to one side and you’ll see the initial result. Click a few more times to remove the ‘solid’ parts in the middle, eventually you’ll see the outline that takes into account all the surface borders and correctly removes the overlaps. Enter to accept, then PlanarSrf the resulting curve.
Network_PG.3dm (622.5 KB)



Thank you Pascal !!!

Does this mean that in Rhino a series of planar surfaces can not be merged into a single surface without the user specifically clicking on particular parts of the inner ‘holes’ after the CurveBoolean command has been called?
Is it possible that this issue can not be solved automatically with a macro or a script, and that it solely depends on whether or not the user clicked on the right inner ‘holes’ after the CurveBoolean command has been called?

The command MergeAllFaces is what you’re looking for but in your model the planar surfaces overlap one another rather than being joined at their edges. This is why the other comments are providing you with alternate fixes given this specific case. If you model the surfaces so that they join but don’t overlap the MergeAllFaces command will combine joined and co-planar surfaces into one surface.


Thank you Brian !

I can not model the surfaces in the way that they join but not overlap.

It is still amazing to me that Rhino is not capable to solve this issue without a user manually setting/clicking the inner ‘holes’ after the CurveBoolean command has been ran.

Is there maybe some way to create a polysurface instead of a single face surface? I would be grateful for that.
Anything that would enable me to make a button, a macro or a script, and then run it. And not depend on clicking the specific inner ‘holes’ after the CurveBoolean command has been ran.

This might be the best thing to look at changing if possible to accommodate the end goal of a single trimmed and planar surface. I’m not sure what data you’re starting with and what the workflow is but I bet there are ways to do it differently.

If not, I’d try to use Grasshopper to do the work for me but it looks like CurveBoolean isn’t possible as a component there so I have a feeling it would get complicated quickly to pull it off.

Sadly I can not model the surfaces in the way that they join but not overlap.

Is it possible that I get a trimmed polysurface instead of a single trimmer surface? This would work for me as well, as long as I do not have to manually click the inner ‘holes’ after the CurveBoolean command has been ran.

Good news… looks like CurveBoolean in the v6 WIP is better at figuring this out than v5 is. I was able to up the tolerance in the file and use this speedy workflow to get what you need.

If you don’t know about the WIP… Welcome to Serengeti

1 Like

Thank you once again for the advice Brian!
It seems to WIP workflow fills the four ‘holes’ in the middle of the CurveBoolean command result.
I do not want to sound as if I complain to every good advice you give me. I am very grateful to all three you gave me.
However, regardless of the result that Rhino WIP CurveBoolean command created, I would still like to solve this issue in Rhino 5.

I tried to convert all these overlapping surfaces to meshes then join all the meshes into a single mesh. Then convert meshes to polysurfaces (with MeshToNURB command), but the result is not a single polysurface, but separate surfaces from which the mesh has been created. I am not sure how to solve this issue.

I don’t know/understand how you get your surfaces in the first place, but if the result shown in the video is what you want/need in V5 you can draw a plane larger than all surfaces you have. You then simply use the surfaces to split that plane… Finally you use DupFaceBorder and delete everything you don’t need.


What’s the reason you can’t use the v6 WIP?

Thank you for the reply Marcus !
Is this what you are suggesting:

I tried to use the Split command to split all these planar surfaces that I have with rectangular planar surface you suggested.
This is the result:

I am not sure how to extract the joined surface/polysurface from this result.

It does not support our operating windows xp system.
Brian do you think a polysurface can be created in Rhino 5 instead of a surface?

I’m not sure. I’d suggest getting a more up to date OS and then just use the WIP.

RH-38744 is fixed in the latest WIP

I have average knowledge of rhino, but would just like to point out that Boolean is rather for volumes, and not surfaces. So, the tools you need will definitely be in the Surface tools section. That said, ironically, the tool you need is CurveBoolean…
I opened your file, created two new layers. SelAll, then Dupborder. Then I did CurveBoolean, selecting a few curves at a time, locking the resulting curves before CurveBoolean the next batch. Eventually, I unlocked the three locked curves, and did a final CurveBoolean. First click outside the surfaces, then inside the “holes”.
Then Srf from Planar Curves, and it’s done. I’ve attached the result.
It takes about one minute to do, though much longer to explain!

1 Like

Thank you for the reply cowabounga! And sorry for the late answer.

The two providied solution with CurveBoolean on Rhino 5 and Rhino WIP both work. The on with Rhino 5 is buggy and depends on the order of picked curves, but still works if they are picked in correct order. I have no doubt your solution worked also !

But what I needed was an automated solution to this problem. A macro, or some sort of program-script. I didn’t want to solve this problem by manually having to pick certain regions with CurveBoolean command.

Nevertheless thank you for your help !