The result of mesh union is still failure

I execute union function for mesh, but the result is bad.
Anyone know what happen ?
The result is below.
I offer the crashed file in the bottom.

boolean error.3dm (185.5 KB)

you want a simple answer? It looks like the rod on the bottom doesn’t like you. Surely, there are more complex ways of hiding the underlying reason. Just kidding.

I also know absolutely nothing, but am challenging myself to help figure it out. I no nothing of mesh union.

Is it possible there is a underlying curve that somehow accidently got a mesh, or incorporated into a previous mesh union, and the directions were flipped?

  1. Is there some kind of function in mesh union that makes meshes planar? In the middle pic, it appears as if instead of going around the cylinder, the mesh direction snapped to the plane or something. Something to do with the plane, and those specific triangular meshes.

  2. Is there any correlation with the pattern that is awkward, and curves you have worked with in any way? Did you trim anything that looks like that side view of a rounded rod? Any projects of a side view of a smooth ended rod?

  3. Does your cplane have anything to do with the function of mesh union?

  4. Is there anything with negative z coordinates to that cplane?

I think that rod don’t love it. :smile:
Thanks you for reply.
Therefore, I provide the file.
I don’t find out the problem. The result is still failure.
Help ! :scream:

@tim can you take a look at this?

Hi Kaichang,

Just curious, is there a reason your cylinder mesh needs to be so complicated? Regardless, I figured this might be an intersection issue but that turned out fine. And the merged mesh (an interim, behind the scenes mesh) had the same set of non manifold edges as the intersection. So, I can’t tell you why it’s not working for sure, and the complicated geometry will make it difficult to debug. But, I can tell a work around that’s essentially a manual version of the boolean operation.

First run TestMeshMerge, set the boolean type to Merge and select the two meshes.

Once that’s done run -ExtractMeshPart and choose ExtractToNonmanifoldEdges (you need the dash to get the option, normally the command works with unwelded edges, not non-manifold). Select a face in the potion of the mesh you want to remove. Do it a second time for the other part you want to remove.

At this point you have a mesh that is essentially the same as running a boolean on it.


Hi !
About “Select a face in the portion of the mesh you want to remove. Do it a second time for the other part you want to remove.”

About above, I don’t know “Do it a second time for the other part you want to remove”.

I can’t delete any mesh. And the mesh I want to delete is inside other mesh, I hardly select it, like below.

Yes, it can be sort of challenging to select the right face, but not impossible. You need to zoom in far enough so you can pick the appropriate face(s). It’s also much easier to do in wireframe mode because you can select the face with an edge. There is a portion of both of the original meshes that you’ll want removed. It’s not that hard, if I can do it, I’m pretty sure anyone can. I’ve attached a model with the result of the steps I wrote in my last post.


boolean_result.3dm (128.5 KB)

I got it.
Thank you for help. :smile:
I try to use lots of programs to do it.
Some do it well, but I need to use Rhino to solve my problem.
It let me want to know why failure. So,the problem is possibly non-manifold ?

No, non-manifold is not the problem. Under normal circumstances you’ll probably never have to deal with them. I suspect that somewhere along the intersection there might have been 2 triangles in the merged mesh that shared a vertex and each had an edge that matched up with an edge of a single quad or triangle (of the other pre-merged mesh). The algorithm that sorts the faces into the different parts got confused and that’s how you ended up with your initial result. This is speculation, but a very possible (probable) scenario. Without spending time analyzing what’s going on in a debugger though, it will remain speculation.


Thank you for help.
It is troublesome.
BTW, why isn’t TestMeshMerge showed in pop-up window?

I develop the program. Would you tell me how to hide commend ?

Test, or hidden command, are derived from CRhinoTestCommand, not CRhinoCommand. See rhinoSdkCommand.h for details.