Have building outlines with courtyards? Looking for a quick way to turn these into building masses? The new Mesh Patch command in Rhino 6 can help.
A common thing to do when building up a site model in Heron is get building footprints to extrude in order to generate some 3D context. Once you have the building footprint outlines, there are a few ways to then extrude them based on height data.
One way would be to create a surface with the Boundary Surfaces component and then extrude them. This works well but can be slow to generate and then can slow the viewport down considerably as it tries to draw all those nurbs surfaces.
Another way would be to create a mesh from the outline by piping the outlines into the C#MeshFromPolyline component (included in the Heron Example file) and then "thicken"-ing the mesh based on it's height data with the WeaverBird Thicken component. This is much faster and works on most building outlines while lightening the load on the viewport. It doesn't, however, work with courtyard buildings, it just creates a mesh for each outline so that the courtyard outline becomes a mesh instead of a mesh hole.
This is where the Mesh Patch method comes in. If the polylines for a courtyard building are in order on their data tree branch so that the outer boundary is first in the list and the holes follow (as is the case when importing shapefiles with Heron), Mesh Patch will create a mesh with the hole(s) for the courtyard(s). I discovered this Mesh Patch functionality was recently exposed as Mesh.CreatePatch in the Rhino 6 SDK, so I went ahead made a C# component to take advantage of it. I also accelerated it with multi-threading and posted it below. I'll probably wrap it up into the next version of Heron.
While testing this Mesh Patch component against the recently multi-threaded Boundary Surfaces component (new in GH 1.0), I've found they are comparable in speed. This is a great improvement to Boundary Surface! However, if you want to save your viewport, you'll want to mesh the surfaces, which would put Mesh Patch across the finish line first.
Here is a Grasshopper file containing C# Mesh Patch component: