# Customer request: split polysurface at tangent edges

**URL:** <https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982>\
**Category:** Rhino for Windows\
**Created:** [May 3, 2018, 9:41am UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982 "2018-05-03T09:41:27Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Michael\_Meyer](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/michael_meyer/32/767027_2.png) [@Michael\_Meyer](https://discourse.mcneel.com/u/Michael_Meyer)\
**Post date:** [May 3, 2018, 9:41am UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/1 "2018-05-03T09:41:27Z")

</div>

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”:

 ![image001](https://global.discourse-cdn.com/mcneel/original/3X/5/0/501cbf00c7b7168786178f45597fd212d029497b.jpg)

 ![image002](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/4/8/48318b99e4a0f0028d970c7c548dc1fd24461fa7.png)

Thanks

Michael

> **[flexiCAD.com · Der Rhinoceros® Spezialist · NEU: Rhino 8 für Windows und Mac](https://www.flexicad.com/)**
>
> flexiCAD e.K. der Rhinoceros Spezialist. Rhinoceros, kurz Rhino 3D, ist die 3D-CAD-Software für Windows und Mac. Ideal für Designer, Ingenieure, Werkzeug- und Formenbauer, Architekten und Multimedia-Künstler. flexiCAD e.K. bietet seit 1998 alles um...

---

<div class="post-metadata">

**Author:** ![Willem](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/willem/32/554347_2.png) [@Willem](https://discourse.mcneel.com/u/Willem)\
**Post date:** [May 3, 2018, 11:29am UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/2 "2018-05-03T11:29:25Z")

</div>

Hi Michael,

There is:

[http://docs.mcneel.com/rhino/5/help/en-us/commands/dividealongcreases.htm](http://docs.mcneel.com/rhino/5/help/en-us/commands/dividealongcreases.htm)

-Willem

---

<div class="post-metadata">

**Author:** ![Michael\_Meyer](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/michael_meyer/32/767027_2.png) [@Michael\_Meyer](https://discourse.mcneel.com/u/Michael_Meyer)\
**Post date:** [May 3, 2018, 12:04pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/3 "2018-05-03T12:04:32Z")

</div>

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.

Cheers

Michael

---

<div class="post-metadata">

**Author:** ![Helvetosaur](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/helvetosaur/32/635974_2.png) [@Helvetosaur](https://discourse.mcneel.com/u/Helvetosaur)\
**Post date:** [May 3, 2018, 2:15pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/4 "2018-05-03T14:15:56Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Andrew\_Nowicki](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/andrew_nowicki/32/60177_2.png) [@Andrew\_Nowicki](https://discourse.mcneel.com/u/Andrew_Nowicki)\
**Post date:** [May 3, 2018, 4:03pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/5 "2018-05-03T16:03:23Z")

</div>

> [@Michael\_Meyer](#):
>
> I want to extract/(split) a polysurface area from the rest of the polysurface at e.g. tangent edges.

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

---

<div class="post-metadata">

**Author:** ![Helvetosaur](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/helvetosaur/32/635974_2.png) [@Helvetosaur](https://discourse.mcneel.com/u/Helvetosaur)\
**Post date:** [May 3, 2018, 4:14pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/6 "2018-05-03T16:14:41Z")

</div>

I think he would like to have this happen automatically…

---

<div class="post-metadata">

**Author:** ![Michael\_Meyer](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/michael_meyer/32/767027_2.png) [@Michael\_Meyer](https://discourse.mcneel.com/u/Michael_Meyer)\
**Post date:** [May 3, 2018, 4:18pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/7 "2018-05-03T16:18:40Z")

</div>

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](https://global.discourse-cdn.com/mcneel/original/3X/5/d/5d1d4a0a5dbcfa8be058befcb967143841a3f6cf.jpg)

[extract\_polysurfaces\_at\_tangent\_edges.3dm](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/5/a/5ac8e26ce0b4645b5420f29d2b4933b9d51200d5.3dm) (500.7 KB)

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

Thanks,

Michael

---

<div class="post-metadata">

**Author:** ![davidcockey](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/davidcockey/32/732604_2.png) [@davidcockey](https://discourse.mcneel.com/u/davidcockey)\
**Post date:** [May 3, 2018, 4:41pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/8 "2018-05-03T16:41:45Z")

</div>

@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.

---

<div class="post-metadata">

**Author:** ![davidcockey](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/davidcockey/32/732604_2.png) [@davidcockey](https://discourse.mcneel.com/u/davidcockey)\
**Post date:** [May 3, 2018, 4:43pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/9 "2018-05-03T16:43:29Z")

</div>

> [@Andrew\_Nowicki](#):
>
> You can use DivideAlongCreases command first to divide the polysurface, and then use ExtractSrf command to extract polysurface face.

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

---

<div class="post-metadata">

**Author:** ![clement](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/clement/32/759176_2.png) [@clement](https://discourse.mcneel.com/u/clement)\
**Post date:** [May 3, 2018, 4:54pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/10 "2018-05-03T16:54:40Z")

</div>

> [@Helvetosaur](#):
>
> think @clement posted a python/rhinocommon script awhile back that had a function that detected tangent or curvature continuous joined seam edges

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.)

\_  
c.

---

<div class="post-metadata">

**Author:** ![Michael\_Meyer](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/michael_meyer/32/767027_2.png) [@Michael\_Meyer](https://discourse.mcneel.com/u/Michael_Meyer)\
**Post date:** [May 3, 2018, 5:23pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/11 "2018-05-03T17:23:53Z")

</div>

Hi @davidcockey,

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

 ![G1](https://global.discourse-cdn.com/mcneel/original/3X/2/b/2b16aff29592b3310560f0b6d49b9598f8cf1d6c.jpg)

Cheers

Michael

---

<div class="post-metadata">

**Author:** ![davidcockey](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/davidcockey/32/732604_2.png) [@davidcockey](https://discourse.mcneel.com/u/davidcockey)\
**Post date:** [May 3, 2018, 5:43pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/12 "2018-05-03T17:43:55Z")

</div>

@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.

---

<div class="post-metadata">

**Author:** ![qythium](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/qythium/32/84125_2.png) [@qythium](https://discourse.mcneel.com/u/qythium)\
**Post date:** [May 3, 2018, 5:53pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/13 "2018-05-03T17:53:38Z")

</div>

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

 ![image](https://global.discourse-cdn.com/mcneel/original/3X/1/6/16f24a60f912aae4a09912683f3b0de6f62c9e21.png)

---

<div class="post-metadata">

**Author:** ![pascal](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/pascal/32/479395_2.png) [@pascal](https://discourse.mcneel.com/u/pascal)\
**Post date:** [May 3, 2018, 6:03pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/14 "2018-05-03T18:03:05Z")

</div>

Hi @Michael_Meyer - you can try this thing

[ExtractTangentFaces\_.rhp](https://global.discourse-cdn.com/mcneel/uploads/default/original/3X/f/5/f59443dc315325eabcb382c99c6cb0a63a8fc211.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:

https://www.screencast.com/users/pGolay/folders/Snagit/media/1b868c98-4962-4612-8ef3-58b921fec4ed/embed

-Pascal

---

<div class="post-metadata">

**Author:** ![Michael\_Meyer](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/michael_meyer/32/767027_2.png) [@Michael\_Meyer](https://discourse.mcneel.com/u/Michael_Meyer)\
**Post date:** [May 3, 2018, 6:03pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/15 "2018-05-03T18:03:13Z")

</div>

Hi @qythium,

yes, a script should work.

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

Thanks

Michael

---

<div class="post-metadata">

**Author:** ![Michael\_Meyer](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/michael_meyer/32/767027_2.png) [@Michael\_Meyer](https://discourse.mcneel.com/u/Michael_Meyer)\
**Post date:** [May 3, 2018, 6:05pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/16 "2018-05-03T18:05:04Z")

</div>

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.

Cheers

Michael

---

<div class="post-metadata">

**Author:** ![pascal](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/pascal/32/479395_2.png) [@pascal](https://discourse.mcneel.com/u/pascal)\
**Post date:** [May 3, 2018, 6:06pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/17 "2018-05-03T18:06:00Z")

</div>

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

-Pascal

---

<div class="post-metadata">

**Author:** ![chuck](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/chuck/32/512984_2.png) [@chuck](https://discourse.mcneel.com/u/chuck)\
**Post date:** [May 3, 2018, 6:06pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/18 "2018-05-03T18:06:15Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Michael\_Meyer](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/michael_meyer/32/767027_2.png) [@Michael\_Meyer](https://discourse.mcneel.com/u/Michael_Meyer)\
**Post date:** [May 3, 2018, 6:13pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/19 "2018-05-03T18:13:35Z")

</div>

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. 😉

Cheers

Michael

---

<div class="post-metadata">

**Author:** ![qythium](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/qythium/32/84125_2.png) [@qythium](https://discourse.mcneel.com/u/qythium)\
**Post date:** [May 3, 2018, 6:26pm UTC](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982/20 "2018-05-03T18:26:57Z")

</div>

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.

[Next page](https://discourse.mcneel.com/t/customer-request-split-polysurface-at-tangent-edges/61982.md?page=2)
