Projecting points to multiple surfaces

Hello everyone.

I’m trying to project all these points onto the surfaces above it, and how I’m trying to go about it is using the Line SDL component and taking the intersection of the lines and the surfaces, but it seems like there’s a problem with the data structure so I can’t achieve the intended result. I have a feeling I might have to make all the surfaces into one brep so I tried using the join brep component but it’s still not working. I can’t use surface closest point because then the points would appear only on the lower surfaces.

Attached is the grasshopper definition. I have grouped the relevant components in the far right.
Any help would be greatly appreciated. Thank you very much in advance.

Facade-try-.gh (15.0 KB)

Graft the SLX ‘L’ input.

Hello Joseph,

thank you very much! I have another problem, if you don’t mind. It just so happens that the lines intersect once on this case, and if I make a line using the original points and the intersection points (I’m trying to get the distances between the 2 so I use these lines to check if each point do correspond correctly to their intersection point), the lines will appear just fine. But, if I slightly move my points, then some lines will have 2 intersection points, and the lines between the intersection points and the original will be messy.


Is there anyway to delete the second point on the intersection line, so that each original point will only have one intersection point above it? Thank you very much.
Facade-try-.gh (18.0 KB)

Yes, but the code you posted doesn’t demonstrate the condition you describe.

Two ways:

  1. You can use List Item to select only the first intersection point (sorted by their Z value) or
  2. You can use IsoVist Ray instead of Line SDL to find only the first intersection point.

I would post code but can’t be bothered to create a condition where more than one surface (or “obstacle” for IVRay) is directly above some of your grid points.

1 Like

The slider in the blue group moves the big surface to create overlaps with the four smaller surfaces. The white group sorts the resulting intersection points by Z to get the lowest point.


Facade-try_2020Sep2a.gh (17.6 KB)

Note that Line SDL uses the default length of 1 since SLX doesn’t care how long a line is. It’s a Mathematical intersection, not a physical one.

1 Like

This helped a lot! Thank you very much!

IsoVist Ray (IVRay) has some advantages for this sort of thing. Primarily, there is no need to sort by Z (or ‘t’ position on a line) so the rays can go in any direction.

Here it is adapted to your model:


Facade-try_2020Sep3a.gh (19.0 KB)

1 Like