How would I get dynamo to move square/rectangle shape surface to move to lowest point of topography?
Currently my graph creates array of points but is not accurate because the points may not be over the lowest part of topo. To get better accuracy means to create more points which will slow script down.

Aim is to get current revit family level and change parameter so it moves to lowest part of topography.

Also is it possible to keep the “Empty List” values after flattening? This is so each z value matches up, and empty list wont calculate which is what I want, provided this method is still required.

Get a point from your surface, and pull the Z value.

Subtract the the two Z values, get the absolute value, and multiply the result by -1.

Use a Geometry.TranslateByDirectionDistance to move your original surface along the Z axis (Vector.ZAxis node) by the negative distance found in step 6.

Thanks everyone.
But I have several surfaces so what I really want is min Z-point of topo at each of these areas.
Is there a way to create topo bounding box the same x,y size of surface so it can work out the local min point?

Does Surface.ProjectInputOnto work with a surface as the input? If it does, you could project the surface onto the topo, then take the new surface and find the bounding box/minimum z point.

Likely you have the wrong order for the surface inputs. The topo should be the surface input, the surfaces you want to move should be the inputs to project. And can you reupload the pictures with the outputs displayed? Just seeing the nodes doesn’t show us what the process is.