# Project geometry onto a surface

**URL:** <https://discourse.mcneel.com/t/project-geometry-onto-a-surface/139061>\
**Category:** Grasshopper\
**Tags:** windows\
**Created:** [March 7, 2022, 4:30pm UTC](https://discourse.mcneel.com/t/project-geometry-onto-a-surface/139061 "2022-03-07T16:30:59Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![jordi.rovira](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/jordi.rovira/32/765527_2.png) [@jordi.rovira](https://discourse.mcneel.com/u/jordi.rovira)\
**Post date:** [March 7, 2022, 4:30pm UTC](https://discourse.mcneel.com/t/project-geometry-onto-a-surface/139061/1 "2022-03-07T16:30:59Z")

</div>

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.  
Thank you in advance.

 ![imagen](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/f/7/4/f74ac3d877ecd7615ec1c4d95501b776f0946b0a.png)

---

<div class="post-metadata">

**Author:** ![inno](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/inno/32/544036_2.png) [@inno](https://discourse.mcneel.com/u/inno)\
**Post date:** [March 7, 2022, 4:45pm UTC](https://discourse.mcneel.com/t/project-geometry-onto-a-surface/139061/2 "2022-03-07T16:45:44Z")

</div>

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

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/6/0/f/60f8b9c0d92c44cddcf7bcd19bc5cb4107dc76f4.jpeg)

---

<div class="post-metadata">

**Author:** ![jordi.rovira](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/jordi.rovira/32/765527_2.png) [@jordi.rovira](https://discourse.mcneel.com/u/jordi.rovira)\
**Post date:** [March 7, 2022, 6:06pm UTC](https://discourse.mcneel.com/t/project-geometry-onto-a-surface/139061/3 "2022-03-07T18:06:41Z")

</div>

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.

 ![imagen](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/2/f/5/2f517fdbb378051c2ef2b7e58f84581b0d34c625.png)  
 ![imagen](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/7/7/5/7759e7b00956cc981b0a0382fc128694abdce642.png)  
 ![imagen](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/0/8/3/0831ef605517bf724e2728745b047f3e62d69e43.png)

---

<div class="post-metadata">

**Author:** ![inno](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/inno/32/544036_2.png) [@inno](https://discourse.mcneel.com/u/inno)\
**Post date:** [March 7, 2022, 7:24pm UTC](https://discourse.mcneel.com/t/project-geometry-onto-a-surface/139061/4 "2022-03-07T19:24:00Z")

</div>

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:

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/9/8/1/9817044794ed64b34583c85cf12dbd8df45d6328.jpeg)  
[Sporph.gh](https://discourse.mcneel.com/uploads/short-url/pLphtLAjUCvtb4972PJu8iQHJ5x.gh) (26.6 KB)

---

<div class="post-metadata">

**Author:** ![jordi.rovira](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/jordi.rovira/32/765527_2.png) [@jordi.rovira](https://discourse.mcneel.com/u/jordi.rovira)\
**Post date:** [March 7, 2022, 10:08pm UTC](https://discourse.mcneel.com/t/project-geometry-onto-a-surface/139061/5 "2022-03-07T22:08:49Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Alfredo\_Peña](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/alfredo_pe%C3%B1a/32/601996_2.png) [@Alfredo\_Peña](https://discourse.mcneel.com/u/Alfredo_Pe%C3%B1a)\
**Post date:** [November 29, 2023, 4:35pm UTC](https://discourse.mcneel.com/t/project-geometry-onto-a-surface/139061/6 "2023-11-29T16:35:36Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![inno](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/inno/32/544036_2.png) [@inno](https://discourse.mcneel.com/u/inno)\
**Post date:** [November 29, 2023, 4:43pm UTC](https://discourse.mcneel.com/t/project-geometry-onto-a-surface/139061/7 "2023-11-29T16:43:43Z")

</div>

please post your gh file with internalized geometries

---

<div class="post-metadata">

**Author:** ![Alfredo\_Peña](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/alfredo_pe%C3%B1a/32/601996_2.png) [@Alfredo\_Peña](https://discourse.mcneel.com/u/Alfredo_Pe%C3%B1a)\
**Post date:** [November 29, 2023, 9:35pm UTC](https://discourse.mcneel.com/t/project-geometry-onto-a-surface/139061/9 "2023-11-29T21:35:17Z")

</div>

Here you have @inno  
[Project\_surface.gh](https://discourse.mcneel.com/uploads/short-url/gzlWavbxfFGndsyP7h3mEHqYjim.gh) (254.3 KB)

---

<div class="post-metadata">

**Author:** ![inno](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/inno/32/544036_2.png) [@inno](https://discourse.mcneel.com/u/inno)\
**Post date:** [November 29, 2023, 10:00pm UTC](https://discourse.mcneel.com/t/project-geometry-onto-a-surface/139061/10 "2023-11-29T22:00:46Z")

</div>

I would do something like this

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/8/6/2/862baddbdb286904d2d4d59d84ccdde690dd583a.jpeg)  
[Project\_surface\_Re.gh](https://discourse.mcneel.com/uploads/short-url/eutuFhiqhVUX6r2BsG0OI1i6Bly.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

---

<div class="post-metadata">

**Author:** ![Alfredo\_Peña](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/alfredo_pe%C3%B1a/32/601996_2.png) [@Alfredo\_Peña](https://discourse.mcneel.com/u/Alfredo_Pe%C3%B1a)\
**Post date:** [November 29, 2023, 10:32pm UTC](https://discourse.mcneel.com/t/project-geometry-onto-a-surface/139061/11 "2023-11-29T22:32:14Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![inno](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/inno/32/544036_2.png) [@inno](https://discourse.mcneel.com/u/inno)\
**Post date:** [November 29, 2023, 11:12pm UTC](https://discourse.mcneel.com/t/project-geometry-onto-a-surface/139061/12 "2023-11-29T23:12:33Z")

</div>

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! ❤

---

<div class="post-metadata">

**Author:** ![inno](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/inno/32/544036_2.png) [@inno](https://discourse.mcneel.com/u/inno)\
**Post date:** [November 30, 2023, 12:45pm UTC](https://discourse.mcneel.com/t/project-geometry-onto-a-surface/139061/13 "2023-11-30T12:45:46Z")

</div>

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

sporph:

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/c/0/4/c04b0a8839b640146eaddbac3f15b89822bb8265.jpeg)

projected:

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/b/b/f/bbffbe472230b120f43622bce857d4a9b6a01029.jpeg)

BUT 🙂

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

 ![image](https://global.discourse-cdn.com/mcneel/uploads/default/original/4X/a/6/6/a66590bb62956acd89ea5a3d9b95623a708ddb93.png)

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](https://discourse.mcneel.com/uploads/short-url/8US7RqAHd0p3a3ef2KANEOtp1UA.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]

---

<div class="post-metadata">

**Author:** ![Alfredo\_Peña](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/alfredo_pe%C3%B1a/32/601996_2.png) [@Alfredo\_Peña](https://discourse.mcneel.com/u/Alfredo_Pe%C3%B1a)\
**Post date:** [November 30, 2023, 5:53pm UTC](https://discourse.mcneel.com/t/project-geometry-onto-a-surface/139061/14 "2023-11-30T17:53:39Z")

</div>

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.
