Move Point to reach Surface

Greeting. I am working a task that need to move points so they are placed at corresponded surfaces.

(Some Points are already on the surface as you can see some of the distance are 0).

What I only know is to obtain their distance while I dont know how to move it by the correct direction/vector.

So my question is how to obtain the vector between points and surfaces? Do I need to do something first (e.g. change Surface to Plane.etc.) ? Thanks for your help

P.S. the z coordinates of points are not needed to change.

You actually want to be using Surface.ProjectInputOnto. As long as the direction for all points is along the same axis, you don’t actually need to know the specifics of positive or negative. Dynamo will still move the points onto the surface in the appropriate direction. If you don’t know the axis, or it can change, you can try pulling the geometry perpendicular to the surface. This requires you to convert the points to curves, but then you can convert them back.

If your points are all over the place and need to be projected at different angles you can also try ClosestPointTo.

1 Like

Hello @TCKEAHY ,
You can find the closest point on the surface from a particular points, then you can extract the direction also, (direction between 2 points)

Thank you all. It works