IFC guide to exchange models between Rhino and Revit

VisualARQ includes a built-in IFC import and export plug-in which makes it possible to exchange VisualARQ and Rhino models with Revit (and other AEC software packages) using IFC 2×3 files.

How does it work?

Export from Rhino to IFC:

  • To save the entire model, go to (File > Save as..) and save the model as an IFC file.
  • To save part of the model, select the objects to export, and go to (File > Export) and save the model as an IFC file

Import IFC files into Rhino:
Open a new file (File > Open…) and select the IFC file to import. Make sure you have selected the IFC 2×3 Building Model (*.ifc) file type or All compatible file types.

Import IFC files into Revit:
Go to Open > Open IFC and select the IFC file.

What information do IFC files store?

IFC files store any “built-in” information from VisualARQ objects (i.e “Volume, Height or Area of a wall), and also custom parameters added to VisualARQ and Rhino objects. This video shows how to create custom parameters to add information to any kind of geometry. This information is read by Revit when opening the IFC file.

How are VisualARQ objects recognized in Revit?

The VisualARQ objects, once they are exported to IFC and opened in Revit, are recognized in Revit by their object type (walls as walls, beams as beams, etc…). Revit will understand the imported objects as native Revit objects or Generic Models depending on how objects have been created in VisualARQ.

The table below describes whether Revit reads geometry from IFC files as Standard Revit objects or Geometric objects:

  • Standard objects: Objects identified by Revit as native parametric objects. Styles are recognized as Revit families and objects can be fully edited.
  • Geometric Objects: The object’s geometry is recognized by Revit. The object type is identified but no parametric features are available.

Object typeHow was this object created?Standard ObjectsGeometric Objects
Wall
Walls created from straight or arched paths.X
Walls created from NURBS curve paths.X
Walls created from Solids (with the vaWallFromSolid command).X
Walls that have been extended vertically (with the vaWallExtend command).X
Walls that have had some solid added or subtracted (with the vaAddSolids and vaSubtractSolids commands respectively).X
Walls created from Grasshopper definitions (Grasshopper styles).X
Objects tagged as IfcWall.X
Curtain wall
Curtain walls created from straight, arched or NURBS curve paths.X (Curtain wall systems)
Curtain walls that have had some solid added or subtracted (with the vaAddSolids and vaSubtractSolids commands respectively).X
Curtain walls created from Grasshopper definitions (Grasshopper styles).X
Objects tagged as IfcCurtainWall.X
Beam
Beams created from straight or arched paths.X
Beams created from NURBS curve paths.X
Beams that have had some solid added or subtracted (with the vaAddSolids and vaSubtractSolids commands respectively).X
Beams created from Grasshopper definitions (Grasshopper styles).X
Objects tagged as IfcBeam.X
Beam joints.X (Not calculated)
Beams with custom End cuts.X (Not calculated)
Column
Columns with load bearing checked (*).X (Structural column)
Columns with load bearing unchecked (*).X (Architectural column)
Walls that have been extended vertically with the vaColumnExtend commandX (Columns open unextended)
Column from blockX
Columns created from Grasshopper definitions (Grasshopper styles).X
Columns that have had some solid added or subtracted (with the  vaAddSolids and vaSubtractSolids commands respectively).X (The solid addition or subtraction is not imported
Objects tagged as IfcColumn.X (Architectural column)
(*) Even though the “Load Bearing” is an object Property, it is necessary to create different column styles and check or uncheck the load bearing property to columns of the same style (in the model), otherwise Revit will recognize all them either as Structural or as Architectural.
Openings (Door & Window)

Profile based.X
Openings from block.X
Openings from curvesX
Openings created from Grasshopper definitions (Grasshopper styles).X
Openings that have had some solid added or subtracted (with the vaAddSolids and vaSubtractSolids commands respectively).X (The solid addition or subtraction is not imported)
Not hosted (that are not anchored to walls or curtain walls).X
Objects tagged as IfcDoor or IfcWindow.X
Stair
Straight stair.X
Spiral stair.X
Stairs created from Grasshopper definitions (Grasshopper styles).X
Objects tagged as IfcStairX
Railing
Railings created from straight or curved paths.X
Railings created from Grasshopper definitions (Grasshopper styles).X
Objects tagged as IfcRailingX
Slab
Slabs created from boundary curves.X (Floor)
Slabs created from planar surfaces.X (Floor)
Slabs that have had some boundary added or subtracted (with the vaSlabAdd and vaSlabSubtract commands respectively).X (Floor)
Slabs that have had some solid added or subtracted (with the vaAddSolids and vaSubtractSolids commands respectively)X (Floor) (The solid addition or subtraction operation is not imported)
Slabs created from Grasshopper definitions (Grasshopper styles).X
Objects tagged as IfcSlabX
Roof
Roofs created from boundary curves (hip, gable and shed roofs).X (Each slope is read as an individual roof)
Layer-based from planar surfaces (composite roofs).X
Layer-based from non planar surfaces (composite roofs).X
Roofs that have had some boundary added or subtracted (with the vaRoofAdd and vaRoofSubtract commands respectively).X (Each slope is read as an individual roof)
Roofs that have had some solid added or subtracted (with the vaAddSolids and vaSubtractSolids commands respectively)X (The solid addition or subtraction operation is not imported). (Each slope is read as an individual roof)
Roofs created from Grasshopper definitions (Grasshopper styles).X
Objects tagged as IfcRoofX
Furniture
Furniture elements created from blocks.X
Furniture elements created from Grasshopper definitions (Grasshopper styles).X
Objects tagged as IfcFurnishingElementX
Element
Elements created from blocks.X (Generic Model or any other Ifc Type assigned)
Elements created from Grasshopper definitions (Grasshopper styles).X (Generic Model or any other Ifc Type assigned)
Annotation
Annotations created from blocks.X (Generic Model)
Annotations created from Grasshopper definitions (Grasshopper styles).X (Generic Model)
Guide
Regular guides and guides from curvesX (Lines and Texts)
Space
Space created from insert point.X (Room and Room Label)
Space created from curve.X (Room and Room Label)
Space created from surface.X (Room and Room Label)
Level
Levels created in Level Manager.X (Floor plan)
Section
Section line.X (Generic Model)
Table
Schedule tableX (Generic Model)
Rhino geometry
Surfaces, polysurfaces, extrusions, blocks and meshes.X (Generic Model or any other IfcType assigned)

How are non VisualARQ objects recognized in Revit?

Rhino geometry, such as curves, surfaces, polysurfaces or meshes, are exported by default as IfcProxy, and recognized in Revit as Generic Models.

However, VisualARQ provides the IfcTag that lets you export these objects using a specific Ifc Type, according to the Building Smart public library for Building elements.

The IfcTypes can be also assigned to objects by layer, from the VisualARQ menu > IFC Export Options Dialog.

This video shows how to assign Ifc properties by object and by layer with the IfcTag feature.