How to join a number of rectangular surfaces to get a single surface in Dynamo


I have different rectangular surfaces which have spaces between them due to walls. I want to join all these surfaces into a single surface. Can anyone suggest me node or method? Thank you in advance the screenshot is attached


They don’t touch, so how can they be one surface?


Why do you want them to be one surface while still having gaps dues to walls ? Extracting any information, or applying any action to those surfaces does not require them to be joined. It just requires them to have a shared parameter which can be extracted.


I want them to be a single surface so I can do meshing on it. When I have a list of surfaces the meshing is not working at all. Any insights would be appreciated. I have attached the script screenshot


then how can I do meshing on the whole surface? any idea? because the delaunay.ByparameterOnSurface is not working in different surfaces.


You could try the following:

  • Extract the perimeter of the surfaces and join them in a polycurve
  • Offset the polycurve outwards sufficiently enough to overlap the adjacent floors (e.g. if the usual wall thickness is 250mm, then offset all the PC by 200?)
  • Rebuild the surfaces
  • Thicken the surfaces
  • Union them in a solid
  • Slice the solid with a plane to get a unified surface


@Dimitar_Venkov’s solution might work, but what is it you’re after in the end? Offsetting May cause May cause other issues.


If your surfaces are defined by the room boundaries, how about including the wall geometry itself in the union mentioned by @Dimitar_Venkov ? List all the walls you want and use Element.Geometry to get the solids and union them with the rest then slice the whole thing and join the resulting surfaces with Polysurface.ByJoinedSurfaces. That way you can also define whether you want to include or exclude exterior walls in your area.

And speaking of Areas… wouldn’t you be better off drawing a boundary and using an area to get your mesh ? That’s probably going to get a cleaner result.