If you have an extruded-cut-through-all hole, that will account for the same loop of edges twice, right? Perhaps you can filter out the duplicates with a measure of the area loop or something similar?
But I seem to have a problem when you said "all faces", or do you mean the outer boxing faces of your part?
Anyhow, I think this can help with the challenging part:
You can use .GetFaces2 to get the faces of the part bodies (object Body2).
After that, you get the loops of on the faces GetLoops and use Loop2.IsOuter to filter out the outermost loop since that is the surface edges.
or you can do like this:
Set swLoop = swFace.GetFirstLoop Do While Not swLoop Is Nothing i = i + 1 If Not swLoop.IsOuter Then ' Do Stuff here End If Set swLoop = swLoop.GetNext Loop
Hope this helps!
This is tremendously helpful.
Regarding your questions, (I believe that) I do mean the outer boxing faces. All the exposed faces basically. (If it was an open ended cylinder for example, this would include the inside faces.)
None of these would be a "through-all" cut, so I don't expect duplicates. (But I will make sure to look for all the desired edge length constraints and such within the "do stuff here")