Well … while still no case posted:
- These rings of yours are not surfaces: they are BrepFaces. A BF face is a surface with trim info. That said a “solid” is a collection of stitched BF’s
- BrepFaces may contain inner loops (holes) and for sure an outer loop (as Curves). If they contain holes no “solid” is possible (some topology that could yield volume).
- So one out of many filtering options could be to query the loops for, say, a point containment (a ccx event maybe).
- Another (case planar stuff) could be to use the normal for some sort of “orientation” sort.
The orthodox way to deal with similar queries is to create a custom type class (containing info related with BrepFaces: ID, planarity, loops, orientation, area, ccx events, connectivity … you name it ) and then do classic LINQ stuff on the resulting List.
For instance: Find all the BrepFaces that are connected with 4 other faces where 2 of them are planar and 2 not and their area is > this and < that.
Or: Find all the BrepFaces that have 3 holes and are not planar.
That said what type of info to include in the class … is 100% case specific.
An example: locating “same” Breps: