When transferring models from one software to another, it is important to understand what is happening ‘under the hood’. One of the most common workflows for Architects is to import Rhino geometry into Revit. We have already discussed some of the best practices to follow when attempting this in the ‘Rhino to Revit workflow‘ tutorial. However, what hasn’t been discussed is the actual methodology Revit uses to translates the NURBS geometry. Below is a brief description which explains the specific geometric challenges for interoperability across the Rhino and Revit platforms. This is a repost of Nate Miller’s ‘Interoperability geometry‘ post from the Proving Ground. While it was originally based on the now defunct Import OpenNURBS add-in for Revit by CASE, one can assume that the same principles still apply, and which exist in Nate’s latest incarnation, Rhynamo.
Even at the lowest levels of representation, the two systems handle geometry differently, which makes it especially challenging to ensure correct and reliable translation. The graphic below shows a comparison of NURBS and interpolated curves created in Rhino and Revit, which share the same control points and weights. The variations in how the two systems compute the curves are made obvious by the deviations. Even NURB splines are translated with variations.
When a user draws an interpolated curve in Rhino, the user specifies the Greville points (or “edit points”) to produce a NURBS curve representation. When a user draws a spline in Revit (using Curve by Points), Revit will use a Hermite spline interpolation algorithm to draw the curve. Revit also uses this same Hermite spline algorithm for representing imported splines from programs such as AutoCAD… By increasing the number of interpolation points along the Rhino curve, Revit is able to produce matching spline curve geometry with less chance for deviation.
Reconstructing Rhino surfaces within Revit is a tricky science. Revit’s Conceptual Massing API exposes a number of useful higher-level form creation tools for surfaces and solid geometry which can be used to recreate some types of surfaces. However, the mathematical representations of Revit surfaces may vary from Rhino’s NURBS representation making challenging to produce completely accurate reconstructions of Rhino surfaces using automated native API rebuilding. Additionally, the construction geometry used to derive the Revit form (Hermite Splines, for example) are also ripe with their own interoperability challenges.
Much like the spline example, we can use reference points on the original Rhino surface to control the how accurately the Revit form matches the original NURBS. The greater the number of points, the more accurate the construction geometry and the resulting Revit form will be.