Surfaces do not split

In the attached I have a sweep2 in blue and a closed extrusion in purple. The extrusion passes through the sweep twice. However, if I split (or Trim) the purple using the blue, I would expect to get 3 pieces. Instead I only get 2. The upper surface passing through the purple does not split.

Why is this the case?

Split Problem.3dm (3.2 MB)

This should intersect, but it is getting an incomplete result at the file tolerance of 0.00001. If you reduce your tolerance to 0.001 you will get a result.


If I build the same thing using NetworkSrf rather than Sweep2, it splits.

Hi Jim - this is apparently a hard case for the intersector - it looks like there is a knot line that exactly matches the intersection for a short distance and this is where the gap appears in the intersection curve. I’ll get this on the pile for the developer to look at - it has the same problem in V6.

Meantime, Intersect and then filling in the gaps with BlendCrv will make curves that split the object.

Split Problem_PG.3dm (400.6 KB)


The purple surface has two rows of nearly degenerate spans. See the bug report for more details. This surface needs to be remodeled cleanly.

The real bug is that Rhino fails to identify object with knots piled close together as Bad Objects.

The failure to identify the bad objects leads to the failure to identify bugs in the Rhino code that create such objects.

I regularly check for near-degenerate knot spans in boundary curves by using a macro that duplicates all surface boundaries, converts to Beziers and checks for short curves. You have to do this every couple of hours and repair any edges that are bad to keep a model clean. There is just no excuse for McNeel stubbornly refusing to address this problem.

Let me fill in the missing piece then. Here’s how the surface was created. Do a closed Sweep2.

As a workaround, I have been using NetworkSrf, which as not caused problems.

Problem Bad Surface.3dm (3.0 MB)

Hi Jim - the way out for Sweep2, in this case, is to MakeUniform on the red cross section curves before sweeping.