Support for receiving BREPs and NURBS geometries across all apps?

Most of what is available in the industry today for interop implement a quick solution, by extracting the display mesh of a scene/model and only handling meshes from that point on. This is fine if the pipeline is a visualization pipeline, but for engineering, analysis, production, and construction pipelines it is more important to keep the geometry type as native as possible. This means the ability to keep it a NURBS or BREP geometry the entire time. Generating a mesh from that is simple. Generating surfaces and solids from meshes is much more difficult.

Currently, when sending a speckle stream from Revit to Rhino or Rhino to Revit, the geometry received are meshes. This is fine if all you need is context, but if you are creating a pipeline where one asset is modeled in Rhino but documented in Revit, the fidelity and accuracy of the asset needs to be as close to the source as possible. This often means a NURBs surface in Rhino becomes a Freeform Element in Revit.

I’m new to Speckle so candidly I may be missing a desired workflow. Is there a workflow that can support this? If not, are there any plans to support more geometry types across more apps? It is not an easy task. USD is plagued by the same problem.

1 Like

Hi @michaelgmccune ,


We do support NURBS geometry coming from Rhino. You can receive them as Breps in Revit. There are some limitations on Revit’s side for certain geometry types (eg its not possible to create a single closed spline in Revit) for certain environments (Project and Family environments have different limitations) and we are trying to work around them.

So you can create Family instances from your Rhino geometry via Grasshopper. Please give it a try and you are more than welcome to report any bugs here😉. That’s how we can make it more stable.


We don’t export Nurbs geometry from Revit at this stage. Our current priority is to support sending/receiving (possibly) all categories from Revit and make it as reliable as possible. After that, we can consider sending Nurbs geometry instead of meshes.