# Project geometry onto a surface

Hello everyone, I would like to ask you, if there is a tool in grasshopper(or a way to do it), that allows to project (or wrap) a geometry onto a surface (or many surfaces) in a specific direction, like the example I posted here below.

you can use Project component, which projects a curve on a Brep along a direction vector

itâ€™s the same as extruding your curve -infinitely- along the projection vector, and intersecting it with the destination Brep

1 Like

Hi inno,
Thank you for your quick response, but what I need is to get a projected surface in X with the same parameterization of the original, so that I can remap a feature keeping the exact shape from X view and still keeping demolding angles.
So any time you modify the input geometry(in purple) or the target base patch(in blue) everything is updated.

in this case maybe Sporph is closer to what you are looking for, but instead of projection along a vector it is based on reference surfaces:

Sporph.gh (26.6 KB)

1 Like

I see that is the closest solution. Thank you inno!

Maybe I could propose this function(adapt from vector) to be implemented because for industrial design it is very useful.

Thanks @inno.

I see the point, but it doesnâ€™t work for me when I use a complex surface not centered in (0,0,0) and I want to project a planar surface with a Z vector.

Here you have @inno
Project_surface.gh (254.3 KB)

I would do something like this

Project_surface_Re.gh (253.2 KB)

the first project is there just to have nicer curves for the second projectâ€¦ there are probably better ways to do that, but I didnâ€™t want to deal with closing open curves before the Surface Split

Is there any way to obtain as the result only the projected surface? Not all the surfaces in a list.

I think I could appreciate another way, because Project box lasts 10 seconds in my computerâ€¦

Thanks for that solution! @inno

in the above case the surfaces are not being projected on the terrain: the result is â€śas if they wereâ€ť, but we are just interested in the surface boundaries, in such a way to trim out a portion of terrain based on those boundaries

to say the same in other words, you want a portion of the terrain surface to be trimmed in such a way its new boundaries are overlapping the projection_along_Z of the boundaries of the surfaces themselves, so you need to start from the terrain surface and somehow trim it

but hey, Iâ€™m always happy to be demolished by other peopleâ€™s ideas, that get to the same result faster and more elegantly!

if you Sporph using projected destination surface as starting surface, you get a result with very same identical top-view boundaries:

sporph:

projected:

BUT

Sporphed surfaces are not overlapping destination surfaces (here are baked in Rhino to enhance visibility RED = SPORPH ; GREEN = PROJECTED+TRIMMED )

the GAP you see is not a visualization thing: itâ€™s a 5 units difference

here is the GH file:
Project_surface_Re_Re.gh (257.6 KB)

[@wim sorry for this, the attached GH file made me crash on opening 50% of the time
now Iâ€™m on 8 SR2 (8.2.23333.9481, 2023-11-29) but it was crashing also yesterday on the previous candidate release

â†’ fresh launched Rhino, launched GH, open attached GH file, it crashes 50% of the times
â†’ fresh launched Rhino, launched GH, opened attached GH file, baked the final geometries, clicked on Rhino Options icons because I wanted to increase Mesh density by adding polygons, Rhino crashed before showing the Rhino Options window

I am able to randomly repeat the problem on the attached GH file]

Ok, thanks for that other solution.

5 units of difference is not an acceptable error, so unfortunately I canâ€™t use that method.

I thought about extruding the rivers and making the intersection between that solid and the surface, which should return the intersection surface. However, no result is obtained.