Select objects from only one side?

Hello, I turn to you in search of a solution
I have made several attempts but the pc is not helping me

I want to select all the objects that are on the surface, only those of the light gray face and leave those of the dark gray face in their place.


I leave a file.
image sampler gradient.gh (15.3 MB)

Try this:
For each object find center point “P0” (centroid, with “Volume” component).
For each “P0”, find closest point to surface, “P1”.
Evaluate surface from there and find local normal vector, “N”.
Create vector from P0 to P1 , “V”.
Calculate angle from N to V, if angle is greater than pi/2 object is on back side of surface, otherwise in front side.

Something’s wrong.
I failed to cut the cylinders correctly in grasshopper
I decided to do it from Rhino
Something’s wrong.gh (15.1 MB)


what am I doing wrong ? I still can’t separate the external cuts from the internal ones.