Customer request: split polysurface at tangent edges

Hi experts,

there seams to be a Catia function, to split polysurfaces at tangent edges. Is there something similar in Rhino?

Addition: Here are some pictures about this Catia function called “Ableiten”:



Hi Michael,

There is:


Hi @Willem,

thank you, but I don’t want to split a single surface at a kink.

I want to extract/(split) a polysurface area from the rest of the polysurface at e.g. tangent edges.



I think @clement posted a python/rhinocommon script awhile back that had a function that detected tangent or curvature continuous joined seam edges (using BrepEdge.IsSmoothManifoldEdge?). Maybe that function could be adapted to split breps along those edges… May be somewhat difficult for arbitrary breps, as to split, one would always need to find one or more fully closed edge loops… --Mitch

You can use DivideAlongCreases command first to divide the polysurface, and then use ExtractSrf command to extract polysurface face.

I think he would like to have this happen automatically…

Hi @Andrew_Nowicki,

I’ve made an example. How to extract the inner part (red) from the outer (green) part not by hand? I want to extract the inner part by selecting edge 1 and its automatically found tangent neighbour edges.

extract_polysurfaces_at_tangent_edges.3dm (500.7 KB)

This is just a simple example. The customer showed me much more complex sheet metals from the car industry.



@Michael_Meyer In your example edge 1 is a crease, not a tangent edge. The adjacent edge 0.5 mm from edge 1 is also a crease, not a tangent edge.

DivideAlongCreases only works on surfaces; it does not work on polysurfaces.

Hi Mitch, i did not post it. But i see that such a function @Michael_Meyer asks for could potentionally be useful. Just wondering how it should propagate selecting tangent faces from a first face selection and how long ? (eg. connected to first face only or until no more tangent faces are found from the tangent faces etc.)


Hi @davidcockey,

I have done a quick G-test, here it says G1. What do you measure?



@Michael_Meyer I thought you were talking about surfaces which are tangent but not curvature continuous to each other, not edges which are polycurves with segments tangent but not curvature continuous to each other. Two different situations though both can occur together.

I’m no expert at this stuff, but couldn’t you do something like

  • _SelChain with Tangency to select the edge curves
  • _Dup and _Join
  • _Split the polysurface with the resulting curve

and then maybe package all that into a macro

Hi @Michael_Meyer - you can try this thing

ExtractTangentFaces_.rhp (39.5 KB)

I use it fairly often for exactly this but, fyi, I had a report of a crash recently as well - it has not crashed for me…
@Michael_Meyer - for what it is worth in the meantime, till Chuck does the thing right, the plug-in used on your little test file:


1 Like

Hi @qythium,

yes, a script should work.

But why not to integrate more useful commands to enrich Rhino for all?



Hi @pascal,

cool, thank you.

But nethertheless, this seams to be interesting for more users (from Catia). So perhaps a command would be an enrichment.



I agree - it is quite handy and should probably be done right and in Rhino.


I think I can whip off a quick test command. If so, it will be in the 6.5 release candidate. For a start, I will take a polysurface and break it up into clumps of surfaces connected by tangent edges.

1 Like

Hi Chuck,

great, when it’s ready I will send it to my customer, that he can do some tests with his sheet metals. Perhaps he can say more about this Catia stuff and his wishes. I am just the dense messenger, don’t shoot me. :wink:



It would be nice also to have a command like “ExtractTrim” (or maybe ExtractEdge) for polysurfaces, I find myself often using ExtractWireframe and deleting all but a few edges.