Closed surface: how to "open" it?


(Menno Deij - van Rijswijk) #1

Let’s say I create an uncapped pipe around a line. This results in a surface that is closed in U-direction and open in V-direction. The naked edges only run around the two pipe ends.

How can I “open” the U-direction, that is, also have naked edges along the seam? I have tried the UnjoinEdges command but that does not work.

If I split it elsewhere along a V-isocurve (i.e. in the same direction as the desired open seam), I end up with two pieces. I want one piece that is open in U- and V-direction.

Any ideas?


#2

An open seam is where two edges do not match within tolerance. JoinEdge will locally override the tolerace for the edges to join.

So in order to have an open seam, you need to introduce a gap larger than the current tolerance. Everything else will be treated as closed.

Any reason why you would need to have this seam open?


(Menno Deij - van Rijswijk) #3

The reason to open it has to do with our meshing algorithms that need to find the correct borders prior to meshing. I was wondering if the user could “open” a closed surface prior to using the meshing algorithm.

If that is not possible, we have to take closed surface topology into account in our meshing algorithms. I’d rather keep those algorithms as simple as possible, but it looks like we need to cater for this.


#4

Well if you require the user, to find and open seams, you could just as well let those seams be selected and used as input to your meshing.

On the other hand: if you mesh each subsurface separately, you will always have a complete border.


(Menno Deij - van Rijswijk) #5

This is exactly the point - we use the naked edge curves as constituent of the border and require that joining the naked edges gives exactly one closed curve. This is only the case for open surfaces, not for closed surfaces.

For closed surfaces, for example an open pipe, there are two unjoinable naked edge curves, one on each end of the pipe.


#6

You can do this easily enough with a simple shape like a tube but not sure how well it will play with more complicated shapes. Split the tube in half then use ‘join 2 naked edges’ under edge tools to close one side of the tube up again. You will then have three naked edges: the two ends and one seam down the axis of the pipetube.3dm (68.8 KB)


#7

I’m not sure you can, in the same way you can’t open a closed curve like a circle at one point yet have the end points still coincide… You could get the U domain of the surface and split it with parameters just inside the domain ends so that it actually is open by a certain small amount…?

–Mitch


#8

Yeah, in my head the way I did it seemed a logical solution but checking the result, it doesn’t work. The end edges are split too. Surely there is no technical reason why Rhino can’t do this. A new feature in Rhino 6 perhaps.


(Menno Deij - van Rijswijk) #9

OK, too bad. I’ll have to think of something in our meshing algorithms to deal with this topology. Thanks for your suggestions, even though they don’t work :smile:


(Chuck Welsh) #10

It seems like you are probably using the opennurbs SDK somewhere in you process. If so, you can just duplicate the seam’s edge curve, make a new edge from it, and assign that edge to one of the trims at the seam. You may also have to duplicate the vertices at the ends. You’ll end up with a bad object, but the badness is just that you’ll have closed edge curves with different start and end vertices. I would not add it back into Rhino after doing your meshing, since most every Rhino cammand will have trouble with it.


(Menno Deij - van Rijswijk) #11

RhinoCommon is the SDK I’m using, just to be precise. Your suggestion of duplicating the edge if its trim type is seam is definitely worth a try. Thanks, I’ll try that tomorrow :smile: