Pick the the outermost skin of a huge complicated CATIA or Solidworks model


This is a task I need to do very often and it takes too much time.

The task with more details; I get a STEP model extracted from either CATIA or an other solid modeler with all the details including internal details. What I need to work with is a light 3D model including only the outermost surfaces for layout purposes. So every time I receive one of those, it is a long and tedious process of selecting the required geometry.

Is there a tool, a set of tools, a method or some trick to help perform this task?



(Wim Dekeyser) #2

In the windows version you could run SelVisible from multiple camera angles and then delete the rest. Don’t know if this is on the mac version…

(Pascal Golay) #3

Hi Dan - I did make a Python script that might help, in some cases at least. (Wim, in my experience, SelVisible is not reliable enough for this). What it does is select tangent faces on a polysurface, with the ability to set a tolerance for tangency and to add faces to the selection. My guess is that this will seldom be a one-click solution but could make it a lot easier to break out large chunks of the outer skin at least.

I’ll see if I can make an installer to run this as a plug-in and I’ll check back here with it if it looks lime working.


(Pascal Golay) #4

OK, I guess this is worth a try- the file is here. It is an RHI file, so it should offer to install on double-click. I would try installing ‘for me only’ for now, I think that is more reliable. I’d install with Rhino closed. The command in the plug-in is


It will take a while to kick in the first time in a session of Python has not run before in that session, but after that it will fire off normally.

Usage- pick a face on the side to keep - (lets assume it is a thinwall shell with hard edges) The current tangency setting will generate a face selection - you can change that tolerance and it will recalculate, or Grow/Shrink which will add adjacent faces overriding the tolerance, or remove faces from the outer edge of the selection. The LargestFace option is to automate the first face selection- it assumes the largest face is most likely on the side to be kept - the ‘A’ side.
Copy and JoinOutput should be self explanatory…?

Let me know if that is at all useful.



Hello Pascal, sorry for the late feed back, I was out for the whole holiday season and returning to work this morning. After downloading your script, I just tried to install it with no success. Double-clicking on the file launches Rhino with this dead end message (see attached).

I’m far to be an expert in Rhino and wondering what to do with this. FYI, I’ve never used a script so more guidance is needed here.




(Pascal Golay) #6

Hi Daniel- sorry! I’d forgot we were in Rhino for mac here. I’ll post a version that you can use with _-RunPythonScript on OSX, I just need to test a bit- hang on.

ExtractTangentFacesAutoPick.py (23.2 KB)

OK- you can run this using a macro:

_-RunPythonScript (Path to py file)

any luck, @ddeschen?



Mac version tells me it is an unknomn command…


You probably have not installed Python for Mac. It does not get installed by default. See HERE for instructions on how to install it. If indeed you did install it, something else is wrong,yell back here…



Python installed, (thanks Mitch) the script runs fine, tested on a model and runs OK but still selections are incomplete somewhat like the _SelVisible command. It depends on the model as they all offer different challenges to the script or the _SelVisible command.


Python installed, (thanks Mitch) the script runs fine, tested on a model and runs OK but still selections are incomplete somewhat like the SelVisible command. It depends on the model as they all offer different challenges to the script or the SelVisible command.


The second reply was a test of mine having left an underscore in the first one before the first SelVisible word…Puts the followind in italics.

(Pascal Golay) #12

You can set the desired tangency tolerance at the command line (in degrees). Larger numbers will select more faces (that is, faces that are less close to tangent to their neighbors) You can also use Grow at the command line to add faces to the perimeter of the current selection.

Does that help at all?



Will try as soon as I can thanks.


Pascal, I’ve tried your script and the behavior of it with a given model is rather unpredictable even playing with the degrees and the grow option. Please believe me, this feed back is positive but it seems that I will have to do some of the work by hand, which obviously is very realistic in such cases. So this script is helpful but won’t do the “magic” trick. I may combine this tool with the SelVisible command. At the end I will save time on the next huge complex model I get. I consider this as a significant improvement and that further development may not pay back enough considering the efforts and the challenge of having to deal with a wide range of 3D data models.

Many thanks.


(Pascal Golay) #15

Hi Daniel - well, the script was not designed to do what you are asking, I only thought it might help - however, if you think it is misbehaving and not correctly selecting adjacent faces according to the command line settings, then I’d like to know more and see an example…




Pascal, I understand the script was originally designed for another task and as mentioned, it helps and will use it in the future. It is not misbehaving but having to deal with a model designed originally in a solid modeler makes this whole thing very difficult. The main problem is that all parts in the model have back faces or a thickness if you prefer and this is where any automated tool reach its limits quite easily.

Again, many thanks.


(Pascal Golay) #17

Hi Daniel- yeah- what I was thinking is that most likely, all the faces on the ‘front’ will have angles of somewhat less that 90 degrees between faces, and that at the edges, the thin little edges that span between inner and outer ‘skins’ of your part, would be at about 90 degrees from both inner and outer, So, setting the script to select faces up to say, 80 degrees should get most if not all surfaces on one side- does that make any sense with what you’ve got?



Pascal it is often the case that I need these and that’s the challenge.

(Pascal Golay) #19

Hi Daniel - …it’s hard to say without seeing a part (feel free to send me one - pascal@mcneel.com) but using this tool I would select one face on the side to keep. Set the angle to 80 or 85 - that should in many cases get all faces up to the thin edge. If you want just the thin edge extracted, select a on the edge there as a starting face and if the angle is somewhat below 90, it should not select any faces on the inside or outside.



Pascal, most of the parts I’m working on i.e. those large complex models made originally in solid modelers comes from our suppliers. We are regulated by stringent Non-Disclosure Agreements in these caese so I cannot send you a representative model to try out. Sorry.