# How to Create a Surface in Revit from XYZ Point Cloud Data?

**URL:** <https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613>\
**Category:** Packages\
**Created:** [April 3, 2016, 2:42am UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613 "2016-04-03T02:42:14Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gcf\_Design](https://avatars.discourse-cdn.com/v4/letter/g/77aa72/32.png) [@Gcf\_Design](https://forum.dynamobim.com/u/Gcf_Design)\
**Post date:** [April 3, 2016, 2:42am UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/1 "2016-04-03T02:42:14Z")

</div>

I have used Dynamo to plot a number of points within an adaptive family template. The xyz data was derrived from a cropped point cloud survey.

Due to the decimation of the original data, the points where data exists, share common ‘Y’ values.

I am trying to plot a number of curves, using the common ‘Y’ values, in order to create a surface within Revit, however, l am completely stumped on how to proceed.

&nbsp;

Any guidance on how to achieve this would be much appreciated.

 ![Point Cloud Data](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/2X/8/8ff0b12b2a5b308af829fca1973981608dba5bca.png)

&nbsp;

---

<div class="post-metadata">

**Author:** ![jostein\_olsen](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jostein_olsen/32/8570_2.png) [@jostein\_olsen](https://forum.dynamobim.com/u/jostein_olsen)\
**Post date:** [April 3, 2016, 3:52am UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/2 "2016-04-03T03:52:34Z")

</div>

Hi,

What do you want to use the resulting surface for? If it’s just for reference, maybe you’re better of with using Recap 360, or Meshlab to create a mesh out of your points and import that to Revit via Dynamo via the import mesh functionality + the Directshape.ByMesh node?

Or maybe import the pointcloud directly into Revit.

---

<div class="post-metadata">

**Author:** ![Gcf\_Design](https://avatars.discourse-cdn.com/v4/letter/g/77aa72/32.png) [@Gcf\_Design](https://forum.dynamobim.com/u/Gcf_Design)\
**Post date:** [April 3, 2016, 4:53am UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/3 "2016-04-03T04:53:57Z")

</div>

Hi Jostein,

&nbsp;

Thank you for your reply.

&nbsp;

I wish to represent a surface via the point cloud data in Revit, but not via a dwg link. I have used Meshlab, however, not in the context with Dynamo and Directshape.ByMesh node. I guess l was trying to not use Meshlab and just use the point cloud data cropped via Recap to achieve the result in the shortest amount of steps.

The client wishes to observe the nuances of a scanned wall or floor etc. and interact with it within Revit.

&nbsp;

Gary

---

<div class="post-metadata">

**Author:** ![Vikram\_Subbaiah](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/vikram_subbaiah/32/50797_2.png) [@Vikram\_Subbaiah](https://forum.dynamobim.com/u/Vikram_Subbaiah)\
**Post date:** [April 3, 2016, 6:54am UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/4 "2016-04-03T06:54:51Z")

</div>

Have you tried **_NurbsSurface.ByPoints_**?

---

<div class="post-metadata">

**Author:** ![Gcf\_Design](https://avatars.discourse-cdn.com/v4/letter/g/77aa72/32.png) [@Gcf\_Design](https://forum.dynamobim.com/u/Gcf_Design)\
**Post date:** [April 3, 2016, 7:23am UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/5 "2016-04-03T07:23:20Z")

</div>

Hi Vikram,

&nbsp;

Thank you for your suggestion.

I just tried it and it crashed. Is there a limit within reason that the NurbsSurface.ByPoints can handle? I have currently 3000+ points.

---

<div class="post-metadata">

**Author:** ![Gcf\_Design](https://avatars.discourse-cdn.com/v4/letter/g/77aa72/32.png) [@Gcf\_Design](https://forum.dynamobim.com/u/Gcf_Design)\
**Post date:** [April 3, 2016, 7:43am UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/6 "2016-04-03T07:43:05Z")

</div>

Vikram,

I attempted to do it with only 100 xyz points and crashed??

---

<div class="post-metadata">

**Author:** ![Vikram\_Subbaiah](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/vikram_subbaiah/32/50797_2.png) [@Vikram\_Subbaiah](https://forum.dynamobim.com/u/Vikram_Subbaiah)\
**Post date:** [April 3, 2016, 7:45am UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/7 "2016-04-03T07:45:45Z")

</div>

Don’t know if there is a limit.

How about testing it on a smaller set of points to see if it works.

You could use **_TakeEveryNthItem_** to reduce the number of points

---

<div class="post-metadata">

**Author:** ![Vikram\_Subbaiah](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/vikram_subbaiah/32/50797_2.png) [@Vikram\_Subbaiah](https://forum.dynamobim.com/u/Vikram_Subbaiah)\
**Post date:** [April 3, 2016, 7:52am UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/8 "2016-04-03T07:52:48Z")

</div>

In _ **NurbsSurface.ByPoints** _ try setting _uDegree_ and _vDegree_ to **1**

---

<div class="post-metadata">

**Author:** ![Zach\_Kron](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/zach_kron/32/349_2.png) [@Zach\_Kron](https://forum.dynamobim.com/u/Zach_Kron)\
**Post date:** [April 3, 2016, 12:29pm UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/9 "2016-04-03T12:29:54Z")

</div>

The crash shouldn’t be happening (although I’m not able to reproduce this using daily builds) but NurbsSurface.ByPoints also needs a list of list of points (rows), not just a flat list of points. You probably need to order the list into x and z coordinate sorted rows/columns order to make a nurbssurface, using a combination of Point.X, Point.Z, SortByKey, and GroupByKey. I can’t remember if Clockwork has some utilities for this.

If this is heading to Revit, you could also just send the collection of unsorted points to a Topography.ByPoints node, which makes a mesh of whatever jumble of points you have. Of course, then you just have a topo . … not sure how useful that is for you.

---

<div class="post-metadata">

**Author:** ![jostein\_olsen](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jostein_olsen/32/8570_2.png) [@jostein\_olsen](https://forum.dynamobim.com/u/jostein_olsen)\
**Post date:** [April 3, 2016, 3:08pm UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/10 "2016-04-03T15:08:26Z")

</div>

I don’t think a topo will do if it’s a vertical face, since Revit topos dont like points that have the same xy coordinate at different heights, or is this changed in later releases of Revit?

Care sharing a flick of the pts-file?

---

<div class="post-metadata">

**Author:** ![Andrew\_Hannell](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/andrew_hannell/32/103315_2.png) [@Andrew\_Hannell](https://forum.dynamobim.com/u/Andrew_Hannell)\
**Post date:** [April 3, 2016, 5:32pm UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/11 "2016-04-03T17:32:21Z")

</div>

I agree with Jostein- Revit does not like vertical faces in a topo.

I’m no expert in this- but I had similar problems with Civil3D. I don’t know if it uses the same algorithm. I did some reading on [delaunay triangulation](https://en.wikipedia.org/wiki/Delaunay_triangulation) and it should not matter if faces are vertical.

Sacrilege on a Dynamo forum I know- I ended up using Rhino/Grasshopper ‘mesh from from points’ and bringing into a family as a dwg import.  
The family has to be a ‘sectionable’ type- for some reason not all are. From memory, I used ‘structural framing’

&nbsp;

Andrew

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![Gcf\_Design](https://avatars.discourse-cdn.com/v4/letter/g/77aa72/32.png) [@Gcf\_Design](https://forum.dynamobim.com/u/Gcf_Design)\
**Post date:** [April 4, 2016, 5:18am UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/12 "2016-04-04T05:18:50Z")

</div>

Thank you thus far for your responses.

I find Dynamo brilliant and annoying at the same time, however, l know it is my lack of understanding.

&nbsp;

I spent most of the weekend trying to get somewhere with this task and ended up deleting what l have created.

&nbsp;

I may retrieve it from recycling and pass to you guys later.

---

<div class="post-metadata">

**Author:** ![Gcf\_Design](https://avatars.discourse-cdn.com/v4/letter/g/77aa72/32.png) [@Gcf\_Design](https://forum.dynamobim.com/u/Gcf_Design)\
**Post date:** [April 4, 2016, 5:22am UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/13 "2016-04-04T05:22:44Z")

</div>

Attached are the xyz points (in metres), and my graph as it stands.[xyz point cloud data](http://dynamobim.org/wp-content/uploads/forum-assets/gcf-designoutlook-com/04/04/Book1.xlsx) [XYZ Point for Adaptive Family](http://dynamobim.org/wp-content/uploads/forum-assets/gcf-designoutlook-com/04/04/XYZ-Point-for-Adaptive-Family.dyn)

---

<div class="post-metadata">

**Author:** ![jostein\_olsen](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/jostein_olsen/32/8570_2.png) [@jostein\_olsen](https://forum.dynamobim.com/u/jostein_olsen)\
**Post date:** [April 4, 2016, 8:16am UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/14 "2016-04-04T08:16:53Z")

</div>

Hi again,

had a look at it now, and I did this to achieve the results in the pics below:

1. import points to Meshlab via a txt file

2. Making sure all the vertex normals are heading the same way

3. remeshed using one of the available filters (Ball pivoting in my case)

4. Export to .obj

5. Open in dynamo via the Mesh toolkit package

6. convert to polysurface. Be careful! Heavy operation!

7. Import to Revit via spring nodes FamilyInstance.ByGeometry

![4](https://cdck-file-uploads-us1.s3.dualstack.us-west-2.amazonaws.com/flex022/uploads/dynamobim/original/2X/e/ea4835ad351cb000adb18ba68f3ac9a922cfad7f.png)

---

<div class="post-metadata">

**Author:** ![Gcf\_Design](https://avatars.discourse-cdn.com/v4/letter/g/77aa72/32.png) [@Gcf\_Design](https://forum.dynamobim.com/u/Gcf_Design)\
**Post date:** [April 4, 2016, 12:54pm UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/15 "2016-04-04T12:54:53Z")

</div>

Thank you for this response. I have managed to recreate what you have outlined.

&nbsp;

I tried the attached image, using the same technique, but failed at the Mesh.Triangles node. ![Capture](https://cdck-file-uploads-us1.s3.dualstack.us-west-2.amazonaws.com/flex022/uploads/dynamobim/original/2X/1/127588bf33b617939a934255503e96f48fd46348.png)

---

<div class="post-metadata">

**Author:** ![Andrew\_Hannell](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/andrew_hannell/32/103315_2.png) [@Andrew\_Hannell](https://forum.dynamobim.com/u/Andrew_Hannell)\
**Post date:** [April 4, 2016, 10:03pm UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/16 "2016-04-04T22:03:51Z")

</div>

this is the Rhino/Grasshopper version.

Looks a bit different- but that is one lumpy wall…!

&nbsp;

 ![20160405 wall mesh from points](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/2X/d/d8a5098ff5ade2bd43d70a7ded8e65bfb0f07104.png)

---

<div class="post-metadata">

**Author:** ![Vikram\_Subbaiah](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/vikram_subbaiah/32/50797_2.png) [@Vikram\_Subbaiah](https://forum.dynamobim.com/u/Vikram_Subbaiah)\
**Post date:** [April 5, 2016, 12:14am UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/17 "2016-04-05T00:14:14Z")

</div>

With Dynamo 🙂

Could get better results with a little more effort.

File: [Points-Surface.dyn](http://dynamobim.org/wp-content/uploads/forum-assets/testingwaters/04/05/Points-Surface.dyn)

![20160205-1](http://dynamobim.org/wp-content/uploads/forum-assets/testingwaters/04/05/20160205-1.png)

---

<div class="post-metadata">

**Author:** ![Dimitar\_Venkov](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/dimitar_venkov/32/2068_2.png) [@Dimitar\_Venkov](https://forum.dynamobim.com/u/Dimitar_Venkov)\
**Post date:** [April 5, 2016, 12:48am UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/18 "2016-04-05T00:48:13Z")

</div>

You can get a very quick and fairly rough representation of the volume occupied by the points by generating a 3d convex hull. The nice thing about this is that it’s done entirely in Dynamo:

 ![2016-04-05_14-17-15](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/2X/5/511ca003266d29bf35deb76efc07c249cf3750b2.png)

---

<div class="post-metadata">

**Author:** ![Gcf\_Design](https://avatars.discourse-cdn.com/v4/letter/g/77aa72/32.png) [@Gcf\_Design](https://forum.dynamobim.com/u/Gcf_Design)\
**Post date:** [April 5, 2016, 1:31am UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/19 "2016-04-05T01:31:49Z")

</div>

The wall is a very small extract from a point cloud survey from an underground tunnel, however, l agree, it is a rough wall.

---

<div class="post-metadata">

**Author:** ![Gcf\_Design](https://avatars.discourse-cdn.com/v4/letter/g/77aa72/32.png) [@Gcf\_Design](https://forum.dynamobim.com/u/Gcf_Design)\
**Post date:** [April 5, 2016, 2:52am UTC](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613/20 "2016-04-05T02:52:07Z")

</div>

Thank you to all thus far. The results are encouraging, however, Meshlab or something similar seems difficult to beat at the moment. Frustrating, but solutions shall present themselves.

[Next page](https://forum.dynamobim.com/t/how-to-create-a-surface-in-revit-from-xyz-point-cloud-data/3613.md?page=2)
