Splitting surfaces with curves resulting in random extra edges/splits

unhandled

#1

Hello,

I tried to split a few surfaces with a few curves, with the “Split” command, but it results in some extra splitting at random places. Not really sure why this is happening. Rhino file attached below.

split_srf_crv_20180328.3dm (426.7 KB)


(David Cockey) #2

Looks like Rhino does not like the distance your objects are from the world origin. I copied the objects, moved them closer to the origin, and the extra splits did not occur.


#3

Hi David,

I’m not really sure what you meant by moving the objects closer to the origin. Can you share a screenshot please? The geometry is close to 200m long, but it is not very far from the origin as far as I can see (image below).

Also what I find odd/interesting - the split seems to be working fine via Grasshopper.


(David Cockey) #4

You’re correct and i was mistaken about the object being far from the origin. I did move the object and the splits then worked okay.

@pascal This looks like a bug in the code to me.


(Pascal Golay) #5

I believe what is happening is that by asking to split all the surfaces by all of the curves, the rules of splitting with curves say that the curves should be pulled to the surfaces - so some surfaces are being split by curves that are ‘elsewhere’ so to speak.

-Pascal


(David Cockey) #6

Why does moving the surface and curves eliminate the problem? BTW, changing to meters and scaling without moving does not eliminate the problem.

I tried rebuilding the splitting curves, which are arc, as degree 3 curves with 8 control points. Spurious splits still resulted, but different then with the original curves.


(Pascal Golay) #7

Hi David - moving does not help so far here but I am more inclined to see this as a bug after comparing the split results with Pull of the same curve - just narrowing it down to one surface and one curve.

https://mcneel.myjetbrains.com/youtrack/issue/RH-45119

-Pascal


(Greg Arden) #8

In this case the split is performed by extruding the curve perpendicular to it’s self and intersecting with the surface.

When curves are used to split a surface the curve is either pulled back to the surface or extruded in 1 direction and intersected with the surface, ( notice we never actually intersect the curve and surface but the pull back will include the intersection and possibly more).

The rules for pullback vs project are quite complicated and have evolved over the lifetime of Rhino. I can’t say they are right or optimal or even reasonable. However, they haven’t changed much in the last 5 or even 10 years and we don’t get too many complaints.

One helpful tip I can offer: The first test is if the curve lies completely on the surface. If so then pullback is used and in this case of course the pullback is the intersection. So trimming the curve so it doesn’t dangle over the edge of the surface will ensure the desired split.


(Pascal Golay) #9

Ah yes - planar curves - It looks like you can’t win unless you Pull the curve first.

-Pascal


#10

Actually the rules aren’t very complicated and stated clearly in the Help:


  • When you split a surface with a curve in a plan parallel view like the default Top, Front, and Right view, the cutting curve is projected on the surface in the view direction.
  • When you split a surface with a planar curve in an angled parallel or a perspective view like the default Perspective view, the cutting curve is projected on the surface in a direction perpendicular to the curve plane.
  • When you split a surface with a 3-D curve in an angled parallel or a perspective view, the cutting curve is pulled onto the surface by closest points.

The easiest way here is the first option go to Front view and split from there.

This is always a problem whenever you try to split or trim a fillet or a pipe with an arc that is very close to being an isocurve of the fillet or pipe, because the splitting curves are 2d curves that get projected parallel to the center curve of the fillet or pipe.

The most accurate and reliable way to do this is to use splitsrf and make each split exactly an isocurve

That reduces the number of erroneous splits, but there are still a few. The pulled curves are still 2d curves. Pulling helps because the curves get broken up into pieces and there are only a couple places where the pieces fully project

The real solution would be for Rhino to identify these unique surfaces that are easy to identify and then a whole bunch of bugs and limitations in Rhino could be handled properly.


(David Cockey) #11

In file posted above Pull curves to surfaces which results in curves on the surface which do not hang dangle off the surfaces. Split in perspective view with the pulled curves and spurious splits results. split_srf_crv_DC_Pull.3dm (1.3 MB)