How to get triangular meshing on polygonal surfaces

I’m trying to find a way to divide an array of polygonal surfaces into smaller <span style=“text-decoration: underline;”>triangular</span> surfaces.

The problems I faced with at the moment:

  1. Using the Lunchbox Triangle Grid by Face and adapting the python a bit so it can handle a list of surfaces, creates the triangles in the “bounding” surface. So if the input face is a big triangle, the resulted triangles form a square surface contour. This could be solved by the Geometry.Intersect, but then you get too much surfaces. Another disadvantage is that you might get 4 point surfaces due to the intersection. While in here I only want triangles.

  2. Using the Mesh Toolkit, delivers more or less the same problems.

  3. Using the Tesselate > Delaunay is not helping neither.

So the problem is that the generated smaller surfaces with these methods are not within the contour of the input bigger surface, no matter the number of corners of the surface.

You can see an example script on this link:

Surface meshing

Any ideas in here?

If your surface is a Revit surface, you could try to use the Revit API. It has a Face.Triangulate() method that will give you a mesh object. Not sure if it does a better job on the subdivisions, though…

Hi Andreas,

The surface is not a Revit surface. It’s in fact the result of Toposurface.Mesh and the global toposurface triangles converted to Surfaces, by connecting the points.

The below definition should sub divide any polygonal surface into as many triangular sub surfaces as the number of sides of the polygon.

File: Triangulation.dyn

The density of the triangulation can be increased by applying the function (TriDiv) again (…and again…) on the results obtained (The list might need to be flattened, though)


So, let me get this straight. You took a topo mesh and converted each triangle/quad to a surface, and now you want to convert it back to mesh? Mhmmm…can you please tell me what exactly you were trying to do. It seems to me that there are better ways to do it and converting mesh to polysurface is REALLY expensive, especially that you want to convert it back to mesh later.

Is this because you can’t do mesh intersections with points/lines etc?


On a sidenote here maybe, but mesh intersection with points/lines would be extremely helpful in a lot of cases.

Well, I get a Meh with Topography.Mesh. When you ask for it’s vertices, then it seems not to be a very refined mesh. And it takes the rough triangles.

I want to refine this mesh to have more triangles. From those triangles I want to have each point, so I can do some separate surface handling and object manipulation/generation in Revit.

So that’s way I used the FaceVertices to get the surfaces and refine each surface with some guiding value.

@Konrad: any alternative you can think about are very much appreciated :slight_smile: :wink:


This thread is 2 years old but it was the first one that popped up in google when I was trying to obtain something similar. If anyone is self-harmful enough to obtain triangular meshes in Dynamo this was my test approach. This way your cpu is obviously going to hate you and the triangles are not regular… Did anyone come up with something better?

200mm spacing:

100mm spacing:

1 Like