Select A surface (after offset) and delete B with strip

I have closed polysurface after offset (much more complicated than from that example case). I need to separate A surface and delete B surface with a strip. The object is curvy so selecting all visible areas is not a good idea. I`ve thought to select a strip because it’s perpendicular to the A surface. After removing it and joining I will have A and B joined surfaces without the strip. So then will be easy to remove B surface (as one joined polysurface). So I would like to select all surfaces which have more than 80degrees of angle difference from their neighbour. How to do it in Rhino?

image
I want to delete red and leave green. This is only example object. Real case is much more complicated.
test_surface__.3dm (337.5 KB)

Maybe OffsetSrf with Solid=No instead of Yes? That way you wouldn’t have gotten the connecting strips and all the stuff joined into a closed volume.

Otherwise, I don’t think there is an ‘automatic’ way to separate it afterward.

1 Like

I`m during changing your script:
SelSrfNormalsView.py (1.2 KB)

:slight_smile:

I’ve deleted filtration to catch all surfaces not only planar but it`s not catching all surfaces.

This is not my model. I’ve got it as is. It`s some production-ready stuff.

edit: How to change the spread of the angle there? (in your script)

I have to say that your script helped me a lot because I have 90percent of the job done. Only a few surfaces left which I can add manually. So Thank you :slight_smile:

If somebody will have a better idea then please also post it here.

That will work fine in some cases, simply that really curvy surfaces can have normals facing in many directions. The script only samples one normal in the middle of the surface’s U/V domain. So in some case it may not do exactly what you expect.

I thought I had written a script to sample and average the normals over the surface, but I can’t find it now. The definition of “view direction” is already as wide as it can be, covering any normal vector that less than 90° away from the view vector - i.e. sort of a hemisphere in the view direction. To enlarge it further would make it possibly respond to surfaces facing in the “away” direction.

1 Like

I`ve solved it that I fire your script from different angles and it will add a selection with every shot from different angle.

Oh, by the way, you might find that SelBrush could be handy in this case.

1 Like

Yeah but even with SelBrush it`s a slow process when you have to do many object like this.

Something that worked for me 100% was that @pascal plugin:
ExtractTangentFaces.rhp (39.5 KB)

This was best. All needed were selected. All unneeded deleted. Pah, pah, pah, done :slight_smile:

Just in case, here is a view-facing normal script that works on both planar and non-planar surfaces. It samples each non-planar surface and creates an average normal from the samples and uses that to compare.

SelSrfNormalsViewNP.py (2.3 KB)

1 Like