Geometry Gym
HomeYouTube ChannelForumDownloads
  • Geometry Gym Technical
  • Getting Started
    • Installation
      • Common Installation Issues
      • Updates
    • Licensing
      • License Info and Issues
    • Asking for Help
  • Learn
    • Example Files
    • Tutorials
      • Automating Structural Analysis and Design with SPACEGASS
      • Integrating Karamba3d with Geometry Gym
      • Quick Start Guide - Parametric Structural Analysis (SAP2000)
      • IFC to Structural Analysis
      • Intro to Rhino.Inside Revit
    • "How-to" Guides
      • Structural Analysis HTGs
        • Convert a Structural Analysis Model through IFC
        • Transfer IFC to Structural Analysis
      • BIM How to Guides
        • Weekly Batch Convert
  • Rhino-Grasshopper
    • Introduction
      • Interface Set-up
      • Model Set-up
    • BullAnt
      • Introduction
      • Structure
        • Profiles
      • Geometry Creation Tools
        • Geometric Pattern Tools
        • Model Structure
      • Form Finding
      • Geometry Utilities
      • List and Tree Utilities
      • BullAnt Examples
    • Structural Analysis
      • Introduction
      • Structural Analysis plug-in General
        • Tools for Rhino
          • Import/Export Tools
          • Conversion Tools
          • General Tools
        • GH User Interface
        • Structural Model
          • Structural Model Basics
          • Bake Model (Export)
          • Import Structural Analysis Model
          • Convert Model
            • Structural Analysis Detection from BIM
        • Model Attributes
        • Materials
        • Section Properties
        • Elements
          • Nodes
          • 1D Elements (Curve)
          • 2D Elements (Area)
          • 3D Elements (Solid)
          • Groups/Lists
        • Loads
          • Loadings
          • Load Cases
          • Load Combinations
        • Automating Analysis and Result Queries
          • Solver
          • Analysis Result Queries
          • Query Existing Analysis Model
        • Design
      • GSA | ggRhinoGSA
        • GSA Specifics
        • GSA Examples
      • Etabs | ggRhinoEtabs
        • Etabs Specifics
        • Etabs Examples
      • LUSAS | ggRhinoLUSAS
        • LUSAS Specifics
        • LUSAS Examples
      • ROBOT | ggRhinoRobot
        • Robot Specifics
        • Robot Examples
      • SAP2000 | ggRhinoSAP
        • SAP2000 Specifics
        • SAP2000 Examples
      • SPACE GASS | ggRhinoSpaceGass
        • SPACE GASS Specifics
        • SPACE GASS Examples
      • Strand7 | ggRhinoStrand7
        • Strand 7 Specfics
        • Strand7 Examples
      • Karamba3d
        • Karamba3d Examples
      • Create with Code
    • IFC | ggRhinoIFC
      • Introduction
        • Exporting IFC from External App
      • IFC for Rhino
        • Rhino IFC Import
        • Rhino IFC Export
          • Using Rhino IFC Layers
          • Rhino to IFC Example
        • Conversion Tools
        • Rhino IFC Tree Viewer
        • Rhino IFC Tools
        • IFC File Tools
      • IFC Grasshopper
        • User Interface
        • IFC Database Model
          • IFC Database Basics
          • Bake (Export) IFC
        • Create IFC
          • Model Definition
          • Project Libraries
          • Properties and Property Sets
          • Materials
          • Material Profiles
          • Geometric Representations
            • Geometric Operations
          • Element Types and Instances
            • Generic Elements
            • Standard Elements
            • Services Elements
            • Structural Elements
            • Infrastructure Elements
        • Working with IFC
          • Import/Export
          • GUID tools
          • Extract
          • Quantities
          • Assign Relationships
          • Assign Resources
          • Element Placement and Mapping
          • Element Assemblies
        • Create via Code
      • IFC Examples
    • Revit | ggRhinoIFC
      • Introduction
      • Working with ggRVT
        • Import/Export
        • Elements
          • Element Types and Instances
          • Placement
          • Attributes
        • Model Definition
        • Materials and Profiles
        • Families
        • Analytical
        • Documentation
      • Rhino Inside Revit
      • Revit Examples
    • Tekla | ggRhinoTekla
      • Introduction
      • Tekla Examples
  • Revit
    • Introduction
    • RevitIFC
      • IFC Import
        • IFC Import Options
        • IFC Category Mapping
      • IFC Export
        • IFC Enhanced Export
        • IFC Enhanced Export Linked Models
        • IFC Revision Export
      • IFC Tools for Revit
      • IFC Tools
    • Revit to Structural Analysis
  • OTHER
    • Navisworks | ggNavisIFC
      • Import 4D Information to Navisworks
      • Navisworks IFC Export
    • Advance Steel | ggAdvanceSteelIFC
    • Excel | ggExcelIFC
    • IFC Tree Viewer
  • Need Help?
    • FAQs
    • Ask on the Forum
    • Abbreviations
    • Contributors
  • Changelog
Powered by GitBook
On this page
  • Rhino Layers Toolbar
  • Using the RhinoIFC Layers Panel
  • Setting a Rhino Layer Hierarchy
  • Adding Properties
  • Assigning a property set to specific IFC classes
  • Property Template File

Was this helpful?

  1. Rhino-Grasshopper
  2. IFC | ggRhinoIFC
  3. IFC for Rhino
  4. Rhino IFC Export

Using Rhino IFC Layers

Explanation of using Rhino IFC Layers for Generating IFC files

PreviousRhino IFC ExportNextRhino to IFC Example

Last updated 1 year ago

Was this helpful?

Rhino IFC Layers allows the user to take geometry created in Rhino and build an IFC BIM model. This is done by referencing geometrical layers in Rhino and assigning IFC information such as project, site, building, building level and element class type information.

This allows us to generate .ifc files directly from Rhino that can be imported into external applications such as Revit or other CAD/BIM applications. The simple building example below will guide through setting up a simple building in Rhino using RhinoIFC layer for export.

Note that all Geometry Gym Ifc Attributes are simply stored as User Text on layers. So if you prefer to manage this using python, grasshopper or other programming techniques, it's possible to automate the user interface shown below.

Rhino Layers Toolbar

After installing the ggRhinoIFC plug-in there should be an accessible window called ggRhinoIFCLayers available. If you cannot see the window in the properties window right click and see if it is available from the drop down toolbar list.

Don't get this panel confused with the ggRhinoIFC panel. This panel is the IFC tree viewer panel used for browsing imported .ifc files.

Using the RhinoIFC Layers Panel

You will notice that the view of the RhinoIFC Layers panel is a direct representation of the Rhino Layers panel and provides all the available layers that the user has created in Rhino. As new layers are created in Rhino these will automatically be reflected and viewed in the RhinoIFC layers toolbar.

Once you have defined a couple of layers within Rhino you can use the RhinoIFC layers panel to assign IFC information to objects contained within or to Sub/Children layers.

The RhinoIFC Layers Panel is solely used to manage the IFC information assigned to objects within a Rhino Layer. You do not use it to create layers.

Right click on one of the layers in the IFC Layers window. A context menu will appear and allow you to assign an IFC Classification to that layer. Assign the appropriate ifc class designation to the layer by traversing through the context menu to get to your desired classification. The root (or uppermost) layer should be classified as the IfcProject. IFC file can then be created by the ExportToFile option on the right click context menu of this layer for rhino objects on children layers.

Once a layer has been assigned a IFC class designation it will be displayed within brackets next to the layer item. If you right click on the element again the context of the menu is changed to reflect the information in-which can be assigned to that object.

For example if Layer 01 is assigned as the IFC Project Root Layer, when right clicking on the layer again there will be a number of options to assign additional information to the project such as the Project Placement Plane. This menu is context sensitive so will change based on the IFC Class designated. You can also change the provided classification or remove it completely under the Change classification menu item..

You can set a Project Template text file to assign property sets to specific class objects within Rhino. See below for more information

Ignoring layers

Typically when generating Rhino geometry you will have layers in-which you will not want to be exported in the .ifc file. If you do not want a layer to be included in the IFC export then you can set that layer to be IGNORED as shown below:

Setting Classification Systems

In progress. Please contact us for information and advice or please see the information provided under Rhino IFC for Grasshopper.

Setting a Rhino Layer Hierarchy

The first thing to do when defining an IFC export is to understand how the building is broken up hierarchically. An understanding of IFC of benefit for this. As a simple guide the below shows the typical breakdown.

Project -> Site -> Building -> Building Story -> Space -> Assembly -> Element

The items shown in Bold are typically required as a minimum. However, it is good practice to provide further breakdown to make it easier to reference building parts further down the line. Each project will be different, in complexity and stage and requirements.

Adding Properties

It is possible to add properties to associated ifc objects. This process works by assigning user-text to objects in the background and managing this by a IFC properties tab in Rhino under the

Assigning a property set to specific IFC classes

You can automatically assign property keys to objects which have been defined as object classifications using a .ifc text file project template with the containing property sets. This will then allow you to assign property values to each object defined within Rhino.

To add a Project Template:

  1. Navigate to the root Project layer within the Rhino IFC Layers toolbar and select Project Template from the drop down.

  2. A text box should appear which will allow you to paste in your ifc text. This can be in .xml, .step or .json format.

  3. Click Okay. Not if you reopen this text box it will likely be converted to a .json format string.

Once you have added the Project Template text you can now select an object in the Rhino Viewport and assign its property values. Navigate to the Properties panel of and click on the IFC logo icon to view all available properties. You can now also edit these properties for each object.

Property Template File

The below provides a simple example of a property template file. This example generates two property sets. One which is applicable to all IfcSpatialStructureElements and one that is applicable to both IfcElements and IfcSystems.

You can specify which IFC entities each property sets should be assigned too. You can simply do this by modifying the text in project template or by defining this on creation of the template file.

In order to create such a file, we typically recommend Grasshopper as the best way to do this. You can read more about this at the page link below:

{
  "HEADER": {
    "FILE_DESCRIPTION": {
      "description": "ViewDefinition[notYetAssigned]",
      "implementation_level": "2;1"
    },
    "FILE_NAME": {
      "name": "",
      "time_stamp": "2020-06-05T10:55:27",
      "author": "NathanLuke",
      "organization": "Unknown",
      "preprocessor_version": "ggRhinoIFC v1.8.19.0 by Geometry Gym Pty Ltd built 2020-05-25T05:19:24",
      "originating_system": "ggRhinoIFC - Rhino6 Plug-in by Geometry Gym Pty Ltd",
      "authorization": "None"
    },
    "FILE_SCHEMA": {
      "schema_identifiers": "IFC4"
    }
  },
  "DATA": [
    {
      "type": "IfcProjectLibrary",
      "GlobalId": "21hMc4wgjAqRSadX1a_jic",
      "Name": "Asset Property Templates",
      "Declares": [
        {
          "type": "IfcRelDeclares",
          "GlobalId": "1V9uXw1gT02gPkPEPwlIvO",
          "RelatedDefinitions": [
            {
              "type": "IfcPropertySetTemplate",
              "GlobalId": "12aLVZVcv5rgaTnLltBLnd",
              "Name": "Location",
              "TemplateType": "PSET_OCCURRENCEDRIVEN",
              "ApplicableEntity": "IfcSpatialStructureElement",
              "HasPropertyTemplates": [
                {
                  "type": "IfcSimplePropertyTemplate",
                  "GlobalId": "1ymLuN8vPF5RF4P6XK_FZH",
                  "Name": "Project_LocationCode",
                  "TemplateType": "P_SINGLEVALUE",
                  "PrimaryMeasureType": "IfcIdentifier"
                },
                {
                  "type": "IfcSimplePropertyTemplate",
                  "GlobalId": "34G2EWsZX1_BtdJhGiPbzd",
                  "Name": "Project_Parent_LocationCode",
                  "TemplateType": "P_SINGLEVALUE",
                  "PrimaryMeasureType": "IfcIdentifier"
                },
                {
                  "type": "IfcSimplePropertyTemplate",
                  "GlobalId": "29r3CIC1PCPO$6Nig4rMHZ",
                  "Name": "Uniclass_LocationCode",
                  "TemplateType": "P_SINGLEVALUE",
                  "PrimaryMeasureType": "IfcIdentifier"
                },
                {
                  "type": "IfcSimplePropertyTemplate",
                  "GlobalId": "3pfbcjXrH0hPIvvT4aqUNR",
                  "Name": "Location_ID",
                  "TemplateType": "P_SINGLEVALUE",
                  "PrimaryMeasureType": "IfcIdentifier"
                },
                {
                  "type": "IfcSimplePropertyTemplate",
                  "GlobalId": "1dITTjslz1XP3BC2w_8NEs",
                  "Name": "Project_LocationDescription",
                  "TemplateType": "P_SINGLEVALUE",
                  "PrimaryMeasureType": "IfcIdentifier"
                }
              ]
            },
            {
              "type": "IfcPropertySetTemplate",
              "GlobalId": "1lQqf4HwjC39J3cNGKe2hl",
              "Name": "Asset",
              "TemplateType": "PSET_OCCURRENCEDRIVEN",
              "ApplicableEntity": "IfcElement,IfcSystem",
              "HasPropertyTemplates": [
                {
                  "type": "IfcSimplePropertyTemplate",
                  "GlobalId": "2Y_Jhjgh5DNhT3xdCgImT8",
                  "Name": "Asset_ID",
                  "TemplateType": "P_SINGLEVALUE",
                  "PrimaryMeasureType": "IfcIdentifier"
                },
                {
                  "type": "IfcSimplePropertyTemplate",
                  "GlobalId": "0Yev3wh$rDpQcrYWiOyxUl",
                  "Name": "Project_AssetCode",
                  "TemplateType": "P_SINGLEVALUE",
                  "PrimaryMeasureType": "IfcIdentifier"
                },
                {
                  "type": "IfcSimplePropertyTemplate",
                  "GlobalId": "1vNtVROzbF5eYn42ZtYyam",
                  "Name": "Project_Parent_AssetCode",
                  "TemplateType": "P_SINGLEVALUE",
                  "PrimaryMeasureType": "IfcIdentifier"
                },
                {
                  "type": "IfcSimplePropertyTemplate",
                  "GlobalId": "0rfq8vx9n6gByNOqe2oAEt",
                  "Name": "Uniclass_AssetCode",
                  "TemplateType": "P_SINGLEVALUE",
                  "PrimaryMeasureType": "IfcIdentifier"
                },
                {
                  "href": "1ymLuN8vPF5RF4P6XK_FZH"
                },
                {
                  "type": "IfcSimplePropertyTemplate",
                  "GlobalId": "2B75DEezL0kQcI6E0mT$iR",
                  "Name": "Asset_Description",
                  "TemplateType": "P_SINGLEVALUE",
                  "PrimaryMeasureType": "IfcIdentifier"
                },
                {
                  "type": "IfcSimplePropertyTemplate",
                  "GlobalId": "05dQRSKDfCPPiaDLP5Hql$",
                  "Name": "DisciplineCode",
                  "TemplateType": "P_SINGLEVALUE",
                  "PrimaryMeasureType": "IfcIdentifier"
                },
                {
                  "type": "IfcSimplePropertyTemplate",
                  "GlobalId": "2v22J7cJ1Axh4dmEY90uR3",
                  "Name": "SubDiscCode",
                  "TemplateType": "P_SINGLEVALUE",
                  "PrimaryMeasureType": "IfcIdentifier"
                },
                {
                  "type": "IfcSimplePropertyTemplate",
                  "GlobalId": "3pmODlgYP1$QD5mbRxAFSo",
                  "Name": "Asset_Status",
                  "TemplateType": "P_SINGLEVALUE",
                  "PrimaryMeasureType": "IfcLabel"
                },
                {
                  "type": "IfcSimplePropertyTemplate",
                  "GlobalId": "0OC6ewtzn6yh2tb77f9yOq",
                  "Name": "Asset_Owner",
                  "TemplateType": "P_SINGLEVALUE",
                  "PrimaryMeasureType": "IfcLabel"
                },
                {
                  "type": "IfcSimplePropertyTemplate",
                  "GlobalId": "12QUin7SD0YO_r_$YCwTQO",
                  "Name": "Asset_Operator",
                  "TemplateType": "P_SINGLEVALUE",
                  "PrimaryMeasureType": "IfcLabel"
                },
                {
                  "type": "IfcSimplePropertyTemplate",
                  "GlobalId": "2X7ozp8wr6ehHIXjw4$5V0",
                  "Name": "Asset_Maintainer",
                  "TemplateType": "P_SINGLEVALUE",
                  "PrimaryMeasureType": "IfcLabel"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

If you have improvement suggestions for this process please do get in touch.

ggRhinoIFCLayers Panel
Right Click context on Rhino Layer
Ignoring a Layer from IFC Export
Adding a Rhino IFC Layers Project Template
Accessing Rhino IFC Properties