# Project surfaces to surface along a vector

Hello!
How would I project some source surfaces onto a target surface like this:

The projected surfaces should keep their topology, meaning just their control points are projected. It doesn’t matter if the projected surfaces sit then somewhat ‘loose’ on the target.

Thanks a lot!!

Instead of projecting 4 points per surface and try to rebuild the surfaces, a method could be to project the center of each surface and recreate a plane oriented in the same orientations as the small surfaces, but with the slope of the bigger surface. (I know I made a mess of this explanation)

Here’s one way to do so.

orient_on_surface.gh (58.3 KB)

Not very elegant, but should be decently fast for a grasshopper option.
The normals will matter, make sure the normal of the bigger surface is in the same direction as the normals from the smaller surfaces.

Thank you very much for the effort, Antointe! However, for me it’s important that the actual control points of the source surfaces are projected, since it should work for surfaces with any number of control points, ideally also for trimmed surfaces.

I’m looking for a decent (and fast) way to project any kind of road painting (not given by textures) onto a terrain/road surface. I often used a manual way with splitting the terrain, then re-coloring the parts. Slow and tedious.
Since any method that does not actually split the terrain will most probably result in some intersections of the paint (the projected surfaces) and terrain, I intend to add a vertical offset parameter. I expect this to work good enough.
If the ‘gaps’ between paint and terrain become terribly big, the user (mostly me) will have to add extra control points (rebuild) the paint surfaces before using this project tool.
Thanks again!

Oh that a completely different thing than what I understood from your first post + drawing…

The most common way to do would be to project the outer lines on the terrain (component `project` curve onto surface) and the use surface split (with the newly projected curve as a splitter)

Other approaches could be extrude the surfaces down and split the main surface with multiple breps (`split brep multiple`) then find a way to select those surfaces automatically (depends on the cases)