# Placing revit family into site boundary based on the creation of a grid system of points

**URL:** <https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736>\
**Category:** Revit\
**Tags:** dynamo\
**Created:** [April 25, 2025, 8:43pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736 "2025-04-25T20:43:59Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![SamFlood](https://avatars.discourse-cdn.com/v4/letter/s/8dc957/32.png) [@SamFlood](https://forum.dynamobim.com/u/SamFlood)\
**Post date:** [April 25, 2025, 8:43pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/1 "2025-04-25T20:43:59Z")

</div>

I AM TRYING TO CREATE A GENERATIVE DESIGN SCRIPT TO AUTOMATE THE PLACEMENT OF A REVIT FAMILY WITHIN A SITE BOUNDARY. NOT SURE THE BEST WAY TO GO ABOUT THIS, THIS IS WHAT I HAVE SO FAR, CAN’T SEEM TO GET THE list.cartesianproduct NODE TO COMBINE MY X AND Y VALUES INTO A SET OF COORDINATES.

 ![Screenshot 2025-04-25 214516](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/0/9/098512c50efd3330101e4a75fd7f6ac31e05d0d5.png)

---

<div class="post-metadata">

**Author:** ![BimAmbit](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/bimambit/32/192629_2.png) [@BimAmbit](https://forum.dynamobim.com/u/BimAmbit)\
**Post date:** [April 26, 2025, 3:05am UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/2 "2025-04-26T03:05:58Z")

</div>

the cross-product lacing works as well.

 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/7/7/77d6e2dc94065d8044c60eb0aef8c8159ae7b4c5.png)

---

<div class="post-metadata">

**Author:** ![SamFlood](https://avatars.discourse-cdn.com/v4/letter/s/8dc957/32.png) [@SamFlood](https://forum.dynamobim.com/u/SamFlood)\
**Post date:** [April 26, 2025, 12:10pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/3 "2025-04-26T12:10:21Z")

</div>

Yes ! This creates a single grid of points, but I need to create a grid system across my site boundary outlined in the black line. Any ideas, thanks for your

 ![Screenshot 2025-04-26 130847](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/9/0/90091433d032187039e0ed7dc1c311cdc6cc5ce1.png)  
help ?

---

<div class="post-metadata">

**Author:** ![BimAmbit](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/bimambit/32/192629_2.png) [@BimAmbit](https://forum.dynamobim.com/u/BimAmbit)\
**Post date:** [April 26, 2025, 2:26pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/4 "2025-04-26T14:26:13Z")

</div>

see the “Auto” at bottom right of Point.ByCoordinates, right click → lacing → cross-product. see if the output suits ur need.

---

<div class="post-metadata">

**Author:** ![SamFlood](https://avatars.discourse-cdn.com/v4/letter/s/8dc957/32.png) [@SamFlood](https://forum.dynamobim.com/u/SamFlood)\
**Post date:** [April 26, 2025, 8:50pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/5 "2025-04-26T20:50:46Z")

</div>

Wow, thank you so much, tried all day friday to figure that out ! Next step is to filter all points that are outside the site boundary, so that family types are not placed along these points. With the end goal to have a adpative script that allows the user to control parameter inputs, like family type number and grid/point spacings.

 ![Screenshot 2025-04-26 214813](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/c/3/c3e0bdb8985d03f69b9e04372276cdae5104c976.png)

---

<div class="post-metadata">

**Author:** ![Nick\_Boyts](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/nick_boyts/32/76313_2.png) [@Nick\_Boyts](https://forum.dynamobim.com/u/Nick_Boyts)\
**Post date:** [April 28, 2025, 1:21pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/6 "2025-04-28T13:21:22Z")

</div>

`Geometry.DoesIntersect` is looking for two sets of geometry to intersect, not a boolean. This should be the list of points and the surface.

---

<div class="post-metadata">

**Author:** ![SamFlood](https://avatars.discourse-cdn.com/v4/letter/s/8dc957/32.png) [@SamFlood](https://forum.dynamobim.com/u/SamFlood)\
**Post date:** [April 28, 2025, 3:37pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/7 "2025-04-28T15:37:14Z")

</div>

![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/f/6/f668ec16e6469fb3dde9fcbf8fa7c8d3c0ff75da.png)  
Thanks a lot, however now the FamilyInstance.byPoint is coming in with an error, it seems the Geometry intersect node can not wire straight into FamilyInstance.byPoint ? Am i missing a node in between ?

---

<div class="post-metadata">

**Author:** ![Nick\_Boyts](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/nick_boyts/32/76313_2.png) [@Nick\_Boyts](https://forum.dynamobim.com/u/Nick_Boyts)\
**Post date:** [April 28, 2025, 4:17pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/8 "2025-04-28T16:17:20Z")

</div>

Again, your types don’t match. The error states that one of the inputs received is not what the node expects. `Geometry.DoesIntersect` returns a boolean of whether the two geometries intersect or not. You would then have to filter your list of points to return only the points on the surface. The other option would be to use `Geometry.Intersect`, which returns the intersecting geometry of the two inputs. Because you’re checking points, the intersection will always be the same point and essentially filter itself in this particular case.

---

<div class="post-metadata">

**Author:** ![SamFlood](https://avatars.discourse-cdn.com/v4/letter/s/8dc957/32.png) [@SamFlood](https://forum.dynamobim.com/u/SamFlood)\
**Post date:** [April 28, 2025, 6:45pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/9 "2025-04-28T18:45:09Z")

</div>

Geometry.Intersect` between Points and Surface.ByPatch results in a nested list with Empty Lists. Even when the point touches the surface, Dynamo doesn’t treat the point as intersecting properly. Because in Dynamo, Points do NOT “intersect” surfaces unless it’s a 3D solid or curve intersection. That’s why i suspect this solution does not work. Any other ideas, thanks a lot for your help

 ![Screenshot 2025-04-28 194445](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/b/c/bcdcb8058a782d1fa795504465f9118cbe9f1eb9.png)

---

<div class="post-metadata">

**Author:** ![Nick\_Boyts](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/nick_boyts/32/76313_2.png) [@Nick\_Boyts](https://forum.dynamobim.com/u/Nick_Boyts)\
**Post date:** [April 28, 2025, 6:55pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/10 "2025-04-28T18:55:02Z")

</div>

That’s incorrect. Any geometry will intersect with any other geometry. The structure is a list of lists because that’s the structure of points you have. You’ve created the points without a z-coordinate, which is the same as setting them to 0, so I’m assuming your surface is also at 0. I’m guessing the input structure you’re using is causing the issue. Can you show us the inputs for the `Geometry.Intersect` node? Make sure the surface is a single entity (not a list containing a single surface) and flatten your list of points if necessary.

---

<div class="post-metadata">

**Author:** ![SamFlood](https://avatars.discourse-cdn.com/v4/letter/s/8dc957/32.png) [@SamFlood](https://forum.dynamobim.com/u/SamFlood)\
**Post date:** [April 28, 2025, 7:03pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/11 "2025-04-28T19:03:28Z")

</div>

Okay thank you, here is the inputs for the list of points, my surface is all on the one plane to make it simpler for family placement. Really appreciate your help and feedback !!

 ![Screenshot 2025-04-28 200301](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/b/7/b794f2a74edef025db0a67fd2c1a20648ed58679.png)

---

<div class="post-metadata">

**Author:** ![SamFlood](https://avatars.discourse-cdn.com/v4/letter/s/8dc957/32.png) [@SamFlood](https://forum.dynamobim.com/u/SamFlood)\
**Post date:** [April 28, 2025, 7:07pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/12 "2025-04-28T19:07:08Z")

</div>

![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/1/d/1d18180c8a07efe21c7148fe61c0574a1ddb1677.png)  
this is my site boundary in revit, along with my family type placed at each point. The end goal is to have all points/family types placed inside the boundary line, with the ability to rotate each family as needed. I have a list of 4 family types that i would like to control try and control the amount of each type using number slider nodes etc… to be placed on the points.

---

<div class="post-metadata">

**Author:** ![Nick\_Boyts](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/nick_boyts/32/76313_2.png) [@Nick\_Boyts](https://forum.dynamobim.com/u/Nick_Boyts)\
**Post date:** [April 28, 2025, 7:08pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/13 "2025-04-28T19:08:27Z")

</div>

We need to see the node previews or a Watch node to know what’s actually going into your nodes.

---

<div class="post-metadata">

**Author:** ![SamFlood](https://avatars.discourse-cdn.com/v4/letter/s/8dc957/32.png) [@SamFlood](https://forum.dynamobim.com/u/SamFlood)\
**Post date:** [April 28, 2025, 7:11pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/14 "2025-04-28T19:11:06Z")

</div>

![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/e/f/efb670296fee091f89e576cf80c78d7f502d3fcd.png)  
Apologies, I am around for a teams call on C21474446@mytudublin.ie, if that helps, may be easier to communicate, again really appreciate your help !

---

<div class="post-metadata">

**Author:** ![Nick\_Boyts](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/nick_boyts/32/76313_2.png) [@Nick\_Boyts](https://forum.dynamobim.com/u/Nick_Boyts)\
**Post date:** [April 28, 2025, 7:31pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/15 "2025-04-28T19:31:05Z")

</div>

You’ve confirmed that the surface is at Z=0? The information that we’re looking for here is the z-coordinates of your geometry.

Since you’re creating the points based off the surface bounding box anyway, you may as well just use `Surface.PointAtParameter`. That will give you a similar array of points relative to the bounds of the surface without having to deal with the specific coordinates.

Example:

 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/c/f/cff871e934ac50305123e20cdf57f2aa40703238.png)

---

<div class="post-metadata">

**Author:** ![SamFlood](https://avatars.discourse-cdn.com/v4/letter/s/8dc957/32.png) [@SamFlood](https://forum.dynamobim.com/u/SamFlood)\
**Post date:** [April 28, 2025, 7:45pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/16 "2025-04-28T19:45:14Z")

</div>

![Screenshot 2025-04-28 204337](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/b/9/b92465c94da1a165e9aa01ca33e4a875d6d78c7d.png)  
 ![Screenshot 2025-04-28 204254](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/5/0/509749cffcb56eb6a518d9bfbfd81f72d47cc569.png)  
Okay I have used the Surface.bypointatparameter node. it is now creating points way outside the scope of my surface area. Do i now filter using the points like we mentioned before to inside the site boundary ?

---

<div class="post-metadata">

**Author:** ![Nick\_Boyts](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/nick_boyts/32/76313_2.png) [@Nick\_Boyts](https://forum.dynamobim.com/u/Nick_Boyts)\
**Post date:** [April 28, 2025, 8:01pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/17 "2025-04-28T20:01:02Z")

</div>

I’m guessing your UV values are way off. UV values range from 0 to 1. If you’re using the same sequence you created before then you’ll be way outside the bounds of the actual geometry. I think you may also be seeing points from other nodes in your graph. It’s best to turn off all the node geometry previews for anything you aren’t using.

---

<div class="post-metadata">

**Author:** ![SamFlood](https://avatars.discourse-cdn.com/v4/letter/s/8dc957/32.png) [@SamFlood](https://forum.dynamobim.com/u/SamFlood)\
**Post date:** [April 28, 2025, 8:09pm UTC](https://forum.dynamobim.com/t/placing-revit-family-into-site-boundary-based-on-the-creation-of-a-grid-system-of-points/109736/18 "2025-04-28T20:09:11Z")

</div>

Okay thanks for all your help Nick 👍
