Manifold Curve

I am trying to do a difference on two solids and am getting:

If I do a Check on all the solids involved, it says everything is valid.

Searching the web I see examples of a SHOW EDGES command but those examples show a manifold edges button that is not present on my version.

How does one approach diagnoses then?

these types of questions are almost almost much more clear or easier to give a specific answer when the ask_ee posts a model they’re experiencing problems with.

upload a .3dm here and people will have a look.

I was hoping for pointers on self-diagosis. :smile:

Here is an example:

Problem8.3dm (162.0 KB)

It happens when I try to subtract the v-shaped part from the lower, long part.

Unfortunately, although the command line report tells you they are there, you cannot yet show non-manifold edges on the screen in Mac Rhino. So I’m afraid, aside from Rhino telling you there are non-manifold edges somewhere, you will have to go about finding them manually.

Usually non-manifold edges are the result of a surface getting “stuck” inside an object as a result of a Boolean which looks like it went OK, but actually failed partially and didn’t remove all the stuff it should have. To find such surfaces you can try a ghosted view, which will maybe show a darker area where there is one surface too many. Another excellent tactic is to work in shaded mode and use a ClippingPlane to slice through the object and move it back and forth - you can usually easily detect extraneous surfaces inside the object, as long as they’re not microscopic.

Another more invasive procedure is to Explode the object, then Join again. Rhino will not join the parts back into a non-manifold object, so it will leave you either with several separate parts, or one part with real naked edges. The separations/naked edges will show you where the problem is.

In the case of your example there are actually two surfaces inside the object with the rounded end, if you explode the object, remove those two surfaces and then join, you should be OK. Note that the problem of a Boolean operation that produces non-manifold edges is usually due to something being just out of tolerance…

HTH, --Mitch

Here’s a little more confusion to throw in.

You can see that the lower part in the example above is build from two pieces. One is an extruded surface. the other is a NetworkSrf and two planar surfaces.

If I subtract the V from the two parts then union all the solids together it works.

Thanks for the diagnostic suggestions.

ZoomNonManifold will show you them on mac (by the way)

how are you checking that? using What :

Valid polysurface.
Closed nonmanifold polysurface with 19 surfaces.
One or more surface normals are not oriented.
Edge Tally:
2 singular edges
41 manifold edges
5 nonmanifold edges
= 48 total edges

I was using Analysis>Diagnostics>Check.

As suggested by Helvetosaur, I exploded the solid, then rejoined. Oddly, rejoined creating the desired solid but left behind an unused face. I subtracted out so that is can be seen most clearly.

Apparently, when the two solids are added, an extra surface remains.

What is somewhat puzzling to me in this case is that the shape that forms the back of the curved nose is the same shape used to create the extrusion. Therefore, it is not apparent to me why there would be a mismatch at this point.

Ah, excellent - didn’t realize that that did work, thanks! --Mitch

My problem here may be one of tolerance. To fix one problem I copied the contents of the file to another file. The tolerance did not get reset to the low value I had in the original file.

Decreasing the tolerance I find that things no longer meet up.

Feature request: A simple way to see the precise location of a curve. It would be a BIG help.

Here is the source of the what I am trying to do.

I would like to create a networksrf using the read and cyan lines.
Then I am trying to create planarsrf using the red and orange lines to close the whole thing up.
When I have the tolerance set low, the three surfaces will not join up.

problem9.3dm (207.7 KB)

Maybe the question here is what is the right tolerance for this size/type of model. Other problems crept up when the tolerance was too large.

I am finding that I get a lot of problems doing a UNION of two solids where on of the edges goes to a surface created with NetworkSrf. Such unions fail me routinely. However, if I explode the two objects and delete the meeting faces, they seem to join to form a solid fine.

Here is another example of networksrf issues. Problem10.3dm (80.6 KB)

Here I have parts of a solid that I created from 4 networksrf operations and cap ends to the right.
To the left is an Extrude Planar curve. The extruded curve is chopped into four segments to create the last frames used for the networksrf operations on the left piece.

I would assume that they would join—but I would be wrong.

I am curious why they will not unite.

what do you mean by ‘join’?

if i BooleanUnion those two objects, they become a single closed polysurface.

When I do a Solid>Union, I get a “Boolean union failed” message in the status bar at thebottom.

Could we have different versions or settings?

For the record, this boolean union works OK on my end as well.

As far as settings are concerned, tolerance settings are document properties and thus embedded in your file.
I’m running Windows, RH5 SR11 on this machine. @jeff_hammond, which Mac version did you try this on?

i’m using 5.0.2

but strangely enough, i just tried it again with a fresh launch of rhino and it failed… (selected both then called BooleanUnion)… tried another time and another fail.
then tried calling the command first and selecting the two objects at the prompt and it succeeded…
and now (after undoing), it will work regardless of when i select/run the command.


Sounds like a bug then.

Most likely this is due to the ordering of the objects (reversed when you close and reopen). Try by selecting one at a time in ‘both directions’. See how it works one way and not the other? I’ll ask the developer to have a look…
I see this works either way in the V6 WIP.


That appears to be correct.

Select All, Union => Fail
Union, Select Left, Select Right => Fail
Union, Select Right, Select Left => Works

However, the sample is chopped down to make it smaller. On the full sized solids, they do not add either way, even though the area in around the intersection is the same.

Problem11.3dm (54.3 KB)

I’ve shown this before but it is the same problem. I have networksrf to the right and an extrusion to the left. The curve that defines the extrusion is the same as the one defining the intersection to the networksrf.

In the source file they will not union at all. In this file they will union if the tolerance is set large.

Problem11.3dm seems more of a case of sloppy modeling (for lack of better term).

that could be drawn cleaner with a different approach and these booleans would work much better on the objects.

as is, i can see (no analysis other than visual) gaps in the edges of the two objects… the curves need to be drawn in a different way prior to forming solids out of them.

at this point, it might be better to seek help on constructing those objects in a better fashion instead of figuring out how to troubleshoot problems further down the line.

Hi Jim - a couple of things -

  1. For this situation, remving the faces that are between two adjacent objects and using Join is maybe a better way to proceed, but

  2. NetworkSrf does a refit of the input curves before building the surface. - these will seldom match the inputs exactly, but should to within some tolerance specified in NeworkSrf

Removing those surfaces between, then running MatchSrf on the network should allow a join.